Changeset 690cc2 in indico
- Timestamp:
- 02/03/10 19:07:04 (3 years ago)
- Branches:
- master, burotel, hello-world-walkthrough, ipv6, new-webex, prov-dual-interface, v0.97-series, v0.98-series, v0.98.2, v0.98.3, v0.98b1, v0.98b2, v0.99, b8c30da8ebdbdcbd675a873997cc3e95f567de49, 36509dd327b5670bb394f5ec070c14653b4c9c19
- Children:
- de203c
- Parents:
- c83d00
- git-author:
- Jose Benito <jose.benito.gonzalez@…> (02/03/10 19:00:23)
- git-committer:
- Jose Benito <jose.benito.gonzalez@…> (02/03/10 19:07:04)
- Location:
- indico/MaKaC/webinterface
- Files:
-
- 2 edited
-
tpls/SearchBox.tpl (modified) (1 diff)
-
wcomponents.py (modified) (343 diffs)
Legend:
- Unmodified
- Added
- Removed
-
indico/MaKaC/webinterface/tpls/SearchBox.tpl
rba29e6 r690cc2 1 1 <form method="get" action="%(searchAction)s" id="searchBoxForm" style="margin: 0px;"> 2 <input type="hidden" id="searchCategId" name="categId" value=" 0"/>2 <input type="hidden" id="searchCategId" name="categId" value="<%=categId%>"/> 3 3 <div id="UISearchBox"> 4 4 <div id="searchControls"> -
indico/MaKaC/webinterface/wcomponents.py
ra1b323e r690cc2 94 94 95 95 96 if DBMgr.getInstance().isConnected(): 97 template = info.HelperMaKaCInfo.getMaKaCInfoInstance().getDefaultTemplateSet() 98 96 if DBMgr.getInstance().isConnected(): 97 template = info.HelperMaKaCInfo.getMaKaCInfoInstance().getDefaultTemplateSet() 98 99 99 if template != None : 100 100 specTpl = "%s.%s.%s" % (tplId, template, extension) 101 102 if os.path.exists(os.path.join(dir,specTpl)): 101 102 if os.path.exists(os.path.join(dir,specTpl)): 103 103 return specTpl 104 104 105 105 106 106 return "%s.%s" % (tplId, extension) 107 107 … … 115 115 dir = cfg.getTPLDir() 116 116 file = cfg.getTPLFile( self.tplId ) 117 117 118 118 if file == "": 119 119 file = self._getSpecificTPL(dir,self.tplId) … … 123 123 self.tplId, 124 124 extension='wohl') 125 125 126 126 self.helpFile = os.path.join(dir,'chelp',hfile) 127 127 128 128 129 129 def getVars( self ): … … 139 139 cfg = Configuration.Config.getInstance() 140 140 vars = cfg.getTPLVars() 141 141 142 142 for paramName in self.__params: 143 143 vars[ paramName ] = self.__params[ paramName ] … … 146 146 else: 147 147 vars["errorMsg"] = "" 148 148 149 149 if len(vars.get("infoMsg", [])) > 0 : 150 150 vars["infoMsg"] = WInfoMessage().getHTML(vars) … … 163 163 from MaKaC.webinterface.rh.base import RH 164 164 self._rh = RH._currentRH 165 if self.tplId == None: 165 if self.tplId == None: 166 166 self.tplId = self.__class__.__name__[1:] 167 167 self._setTPLFile() … … 185 185 except exceptions.IOError: 186 186 pass 187 187 188 188 vars = self.getVars() 189 189 vars['__rh__'] = self._rh 190 190 vars['self'] = self 191 191 192 192 tempHTML = TemplateExec.executeTemplate( text, vars, self.tplId ) 193 193 194 if helpText == None: 194 if helpText == None: 195 195 return tempHTML 196 196 else: … … 202 202 else: 203 203 raise e 204 204 205 205 206 206 def htmlText(param): … … 220 220 textToHTML = staticmethod( textToHTML ) 221 221 222 def _escapeChars(self, text): 222 def _escapeChars(self, text): 223 223 return text.replace('%','%%') 224 224 225 225 class WHTMLHeader(WTemplated): 226 227 228 226 227 228 229 229 def __init__(self, tpl_name = None): 230 230 WTemplated.__init__(self) 231 232 def getVars( self ): 233 vars = WTemplated.getVars( self ) 234 231 232 def getVars( self ): 233 vars = WTemplated.getVars( self ) 234 235 235 if DBMgr.getInstance().isConnected(): 236 vars['stylesheet'] = Config.getInstance().getCssStylesheetName() 236 vars['stylesheet'] = Config.getInstance().getCssStylesheetName() 237 237 else: 238 238 vars['stylesheet'] = 'Default.css' … … 251 251 self.__isFrontPage = isFrontPage 252 252 self.__currentCategory = currentCategory 253 253 254 254 """ 255 255 Returns the current active timezone. … … 262 262 263 263 return tz 264 264 265 265 """ 266 266 Returns timezone string that is show to the user. … … 276 276 277 277 def getVars( self ): 278 vars = WTemplated.getVars( self ) 278 vars = WTemplated.getVars( self ) 279 279 #urlHandlers.UHUserDetails.getURL(self._currentuser) 280 280 vars["logMeAs"] = "" … … 283 283 vars["userInfo"] = """<font size="-1"><a class="topbar" href="%s" target="_blank">%s</a> - <a href="%s">logout</a></font>"""%(urlHandlers.UHUserDetails.getURL(self._currentuser), self._currentuser.getFullName(), vars["logoutURL"]) 284 284 vars["userDetails"] = """class="topbar" href="%s" target="_blank\""""%urlHandlers.UHUserDetails.getURL(self._currentuser) 285 285 286 286 if self._currentuser.isAdmin(): 287 287 vars["logMeAs"] = vars["loginAsURL"] … … 290 290 vars["userDetails"] = "" 291 291 # ***************** 292 292 293 293 vars["currentUser"] = self._currentuser 294 294 295 295 imgLogo=Configuration.Config.getInstance().getSystemIconURL( "logoIndico" ) 296 296 imgLogin=Configuration.Config.getInstance().getSystemIconURL( "login" ) … … 299 299 ## 300 300 # if Configuration.Config.getInstance().getLoginURL().startswith("https"): 301 # 301 # 302 302 # # Set proper PROTOCOL for images requested via SSL 303 303 # imgLogo=imgLogo.replace("http://", "https://") 304 304 # imgLogin=imgLogin.replace("http://", "https://") 305 # 305 # 306 306 # # Set proper PORT for images requested via SSL 307 307 # imgLogo = urlHandlers.setSSLPort( imgLogo ) 308 # imgLogin = urlHandlers.setSSLPort( imgLogin ) 309 # 308 # imgLogin = urlHandlers.setSSLPort( imgLogin ) 309 # 310 310 vars["imgLogo"] = imgLogo 311 311 vars["imgLogin"] = imgLogin 312 312 vars["isFrontPage"] = self.__isFrontPage 313 313 vars["currentCategory"] = self.__currentCategory 314 314 315 315 if self._aw.getSession(): 316 316 selLang = self._aw.getSession().getLang() … … 318 318 minfo = info.HelperMaKaCInfo.getMaKaCInfoInstance() 319 319 selLang = minfo.getLang() 320 320 321 321 #language list related 322 322 languages = {} … … 329 329 330 330 vars["SelectedLanguage"] = selLang; 331 331 332 332 vars["ActiveTimezone"] = self._getActiveTimezone(); 333 333 """ … … 339 339 """ 340 340 vars["ActiveTimezoneDisplay"] = self._getTimezoneDisplay(vars["ActiveTimezone"]) 341 341 342 342 if DBMgr.getInstance().isConnected(): 343 343 vars["title"] = info.HelperMaKaCInfo.getMaKaCInfoInstance().getTitle() … … 346 346 vars["title"] = "Indico" 347 347 vars["organization"] = "" 348 349 348 349 350 350 # Search box, in case search is active 351 351 if Config.getInstance().getIndicoSearchServer() != '' : 352 vars['searchBox'] = WCategorySearchBox().getHTML() 352 categId = 0 353 if self.__currentCategory: 354 categId = self.__currentCategory.getId() 355 vars['searchBox'] = WCategorySearchBox(categId=categId).getHTML() 353 356 else: 354 357 vars['searchBox'] = "" 355 358 356 359 # Check if room booking module is active 357 360 minfo = info.HelperMaKaCInfo.getMaKaCInfoInstance() 358 361 vars['roomBooking'] = minfo.getRoomBookingModuleActive() 359 362 360 363 #Build a list of items for the administration menu 361 364 adminList = AdminList.getInstance() … … 370 373 if webcast.HelperWebcastManager.getWebcastManagerInstance().isManager(self._currentuser): 371 374 adminItemList.append({'url': urlHandlers.UHWebcast.getURL(), 'text': _("Webcast Admin")}) 372 373 375 376 374 377 vars["adminItemList"] = adminItemList 375 378 376 379 return vars 377 380 378 381 379 382 class WStaticWebHeader( WTemplated ): 380 """Templating web component for generating the HTML header for 383 """Templating web component for generating the HTML header for 381 384 the static web interface when generating a DVD. 382 385 """ … … 384 387 vars = WTemplated.getVars( self ) 385 388 return vars 386 389 387 390 class WManagementHeader( WHeader ): 388 """Templating web component for generating the HTML header for 391 """Templating web component for generating the HTML header for 389 392 the management web interface. 390 393 """ … … 392 395 393 396 class WHelpHeader( WHeader ): 394 """Templating web component for generating the HTML header for 397 """Templating web component for generating the HTML header for 395 398 the help web interface. 396 399 """ 397 400 pass 398 401 399 402 class WRoomBookingHeader( WHeader ): 400 """Templating web component for generating the HTML header for 403 """Templating web component for generating the HTML header for 401 404 the (standalone) room booking web interface. 402 405 """ … … 404 407 405 408 class WConferenceHeader( WHeader ): 406 """Templating web component for generating the HTML header for 409 """Templating web component for generating the HTML header for 407 410 the conferences' web interface. 408 411 """ … … 414 417 tzUtil = DisplayTZ(self._aw,self._conf) 415 418 self._locTZ = tzUtil.getDisplayTZ() 416 419 417 420 def getVars( self ): 418 421 vars = WHeader.getVars( self ) 419 422 vars["categurl"] = urlHandlers.UHCategoryDisplay.getURL(self._conf.getOwnerList()[0]) 420 423 421 424 vars["conf"] = self._conf; 422 425 423 426 vars["imgLogo"] = Configuration.Config.getInstance().getSystemIconURL( "miniLogo" ) 424 427 vars["MaKaCHomeURL"] = urlHandlers.UHCategoryDisplay.getURL(self._conf.getOwnerList()[0]) 425 428 426 429 #moved here from WHeader in order to be able to use DisplayTZ with self._conf (in some pages WHeader has no self._conf). 427 430 #TODO: Is this needed? 428 431 #vars["Timezones"] = Config.getInstance().getTimezoneList() 429 430 432 433 431 434 # if self._conf.getModifKey() != '': 432 435 # url = urlHandlers.UHConfEnterModifKey.getURL(self._conf) … … 463 466 styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance().getStyleManager() 464 467 stylesheets = styleMgr.getStylesheetListForEventType(vars["type"]) 465 468 466 469 # View Menu 467 470 viewoptions = [] … … 525 528 # Save to session 526 529 vars["hideContributions"] = hideContributions; 527 530 528 531 if self._conf.getType() == "meeting" and self._conf.getParticipation().isAllowedForApplying() and self._conf.getStartDate() > nowutc(): 529 532 vars["applyForParticipation"] = _("""<a href="%s">_("Apply for participation")</a>""")%urlHandlers.UHConfParticipantsNewPending.getURL(self._conf) … … 559 562 vars["searchBox"] = "" 560 563 561 564 562 565 return vars 563 566 564 567 class WMenuMeetingHeader( WConferenceHeader ): 565 """Templating web component for generating the HTML header for 568 """Templating web component for generating the HTML header for 566 569 the meetings web interface with a menu 567 570 """ … … 573 576 tzUtil = DisplayTZ(self._aw,self._conf) 574 577 self._locTZ = tzUtil.getDisplayTZ() 575 578 576 579 577 580 def getVars( self ): 578 581 vars = WConferenceHeader.getVars( self ) 579 582 580 583 vars["categurl"] = urlHandlers.UHCategoryDisplay.getURL(self._conf.getOwnerList()[0]) 581 584 #vars["confModif"] = _("""<a href=%s> _("manage")</a>""")%quoteattr(str(urlHandlers.UHConfEnterModifKey.getURL(self._conf))) … … 598 601 vars["showExportToPDF"] = True 599 602 vars["showMore"] = True 600 603 601 604 # Dates Menu 602 605 tz = DisplayTZ(self._aw,self._conf,useServerTZ=1).getDisplayTZ() … … 620 623 sdate = sdate + timedelta(days=1) 621 624 vars["datesMenu"] = "".join(dates); 622 625 623 626 # Sessions Menu 624 627 sessions = [] … … 641 644 sessions.append(""" <option value="%s" %s>%s</option> """%(id, selected, title)) 642 645 vars["sessionsMenu"] = "".join(sessions); 643 646 644 647 # Handle hide/show contributions option 645 648 hideContributions = None; … … 651 654 hideContributions = "" 652 655 vars["hideContributions"] = hideContributions; 653 656 654 657 if Config.getInstance().getIndicoSearchServer() != '' : 655 vars["searchBox"] = WCategorySearchBox(optionsClass='meetingHeaderSearchBox').getHTML() 658 vars["searchBox"] = WCategorySearchBox(optionsClass='meetingHeaderSearchBox').getHTML() 656 659 else: 657 660 vars["searchBox"] = "" 658 661 659 662 urlCustPrint = urlHandlers.UHConferenceOtherViews.getURL(self._conf) 660 663 urlCustPrint.addParam("showDate", vars.get("selectedDate", "all")) … … 664 667 urlCustPrint.addParam("view", vars["currentView"]) 665 668 vars["printURL"]=str(urlCustPrint) 666 669 667 670 668 671 urlCustPDF=urlHandlers.UHConfTimeTableCustomizePDF.getURL(self._conf) … … 671 674 vars["pdfURL"]=str(urlCustPDF) 672 675 673 676 674 677 return vars 675 678 676 679 class WMenuSimpleEventHeader( WMenuMeetingHeader ): 677 """Templating web component for generating the HTML header for 680 """Templating web component for generating the HTML header for 678 681 the simple event' web interface with a menu 679 682 """ 680 683 681 684 def getVars( self ): 682 685 vars = WMenuMeetingHeader.getVars( self ) … … 693 696 vars["viewoptions"] = viewoptions 694 697 vars["SelectedStyle"] = styleMgr.getStylesheetName(vars["currentView"]) 695 698 696 699 vars["showFilterButton"] = False 697 700 vars["showExportToPDF"] = False 698 701 vars["showMore"] = True 699 702 700 703 vars["accessWrapper"] = self._aw 701 704 return vars 702 705 703 706 704 707 705 708 class WFooter(WTemplated): 706 """Templating web component for generating a common HTML footer for the 709 """Templating web component for generating a common HTML footer for the 707 710 web interface. 708 711 """ 709 712 710 713 def __init__(self, tpl_name = None, isFrontPage = False): 711 714 WTemplated.__init__(self, tpl_name) 712 715 self.__isFrontPage = isFrontPage 713 714 def getVars( self ): 715 vars = WTemplated.getVars( self ) 716 716 717 def getVars( self ): 718 vars = WTemplated.getVars( self ) 719 717 720 vars["isFrontPage"] = self.__isFrontPage; 718 721 719 722 if not vars.has_key("modificationDate"): 720 723 vars["modificationDate"] = "" 721 724 722 725 if not vars.has_key("shortURL"): 723 726 vars["shortURL"] = "" 724 725 return vars 726 727 728 return vars 729 727 730 class WNavigationDrawer(WTemplated): 728 731 … … 732 735 self._track = pars.get("track", None) #for abstracts viewed inside a track 733 736 self._bgColor = bgColor 734 737 735 738 """ 736 739 The appendPath is an array with dictionaries: {"url": x, "title": x}. 737 Each of these links are added in the end of the breadcrumb 740 Each of these links are added in the end of the breadcrumb 738 741 """ 739 742 self._appendPath = appendPath … … 747 750 vars["appendPath"] = self._appendPath 748 751 return vars 749 752 750 753 def getHTML(self, params=None): 751 754 return WTemplated.getHTML(self, params) 752 755 753 756 class WSimpleNavigationDrawer(WTemplated): 754 757 755 758 def __init__( self, title, handler = None, bgColor = None, **pars ): 756 759 self._urlHandler = handler … … 758 761 self._title = title 759 762 self._bgColor = bgColor 760 763 761 764 def getVars( self ): 762 765 vars = WTemplated.getVars( self ) … … 766 769 vars["bgColor"] = self._bgColor 767 770 return vars 768 771 769 772 def getHTML(self, params=None): 770 773 return WTemplated.getHTML(self, params) 771 774 772 775 class WBannerModif(WTemplated): 773 776 774 777 def __init__( self, path = [], itemType = "", title = "" ): 775 778 WTemplated.__init__( self, "BannerModif" ) … … 777 780 self._title = title 778 781 self._type = itemType 779 782 780 783 def getHTML(self): 781 784 """ Retrieves the HTML of the banner of the modification interface … … 785 788 of the breadcrumb showed in the banner. 786 789 """ 787 790 788 791 return WTemplated.getHTML(self, {"type" : self._type, "path": self._path, "title": self._title}) 789 792 … … 800 803 title = target.getTitle() 801 804 WBannerModif.__init__(self, path, itemType, title) 802 805 803 806 def _getOwnerBasePath(self, target): 804 807 path = [] … … 815 818 816 819 class WContribListBannerModif(WTimetableBannerModif): 817 820 818 821 def __init__(self, target ): 819 822 ## PATH … … 826 829 title = target.getTitle() 827 830 WBannerModif.__init__(self, path, itemType, title) 828 831 829 832 830 833 class WNotifTplBannerModif(WBannerModif): 831 834 832 835 def __init__( self, target ): 833 836 path = [{"url": urlHandlers.UHConfModifCFA.getURL(target), "title":_("Call for abstracts setup")}] … … 837 840 838 841 class WAbstractBannerModif(WBannerModif): 839 842 840 843 def __init__( self, target ): 841 844 path = [{"url": urlHandlers.UHConfAbstractManagment.getURL(target), "title":_("Abstracts list")}] … … 843 846 title=target.getTitle() 844 847 WBannerModif.__init__(self, path, itemType, title) 845 848 846 849 class WTrackBannerModif(WBannerModif): 847 850 848 851 def __init__( self, track, abstract=None ): 849 852 path = [] … … 858 861 title=target.getTitle() 859 862 WBannerModif.__init__(self, path, itemType, title) 860 863 861 864 class WCategoryBannerModif(WBannerModif): 862 865 863 866 def __init__( self, target ): 864 867 itemType="Category" … … 867 870 868 871 class WRegFormBannerModif(WBannerModif): 869 872 870 873 def __init__( self, registrant ): 871 874 path=[{"url": urlHandlers.UHConfModifRegistrantList.getURL(registrant.getConference()), "title":_("Registrants list")}] 872 875 873 876 itemType="Registrant" 874 877 title=registrant.getFullName() … … 876 879 877 880 class WRegFormSectionBannerModif(WBannerModif): 878 881 879 882 def __init__( self, target, conf ): 880 883 path=[{"url": urlHandlers.UHConfModifRegForm.getURL(conf), "title":_("Registration form setup")}] 881 884 882 885 itemType="Registration form Section" 883 886 title=target.getTitle() … … 885 888 886 889 class WEpaymentBannerModif(WBannerModif): 887 890 888 891 def __init__( self, target, conf ): 889 892 path=[{"url": urlHandlers.UHConfModifEPayment.getURL(conf), "title":_("Epayment setup")}] 890 893 891 894 itemType="Epayment plugin" 892 895 title=target.getTitle() … … 894 897 895 898 class WListingsBannerModif(WBannerModif): 896 899 897 900 def __init__( self, conf ): 898 901 path=[{"url": urlHandlers.UHConfModifListings.getURL(conf), "title":_("All listings")}] 899 902 900 903 itemType="Pending queues" 901 904 title="" … … 903 906 904 907 class WParticipantsBannerModif(WBannerModif): 905 908 906 909 def __init__( self, conf ): 907 910 path=[{"url": urlHandlers.UHConfModifParticipants.getURL(conf), "title":_("Participants list")}] 908 911 909 912 itemType="Pending participants" 910 913 title="" … … 913 916 914 917 class WConfLogsBannerModif(WBannerModif): 915 918 916 919 def __init__( self, conf ): 917 920 path=[{"url": urlHandlers.UHConfModifLog.getURL(conf), "title":_("Logs")}] 918 921 919 922 itemType="Log item" 920 923 title="" … … 922 925 923 926 class WCategModifHeader(WTemplated): 924 927 925 928 def __init__(self, targetConf ): 926 929 self._conf = targetConf 927 930 928 931 def _getSingleCategHTML( self, categ, URLGen ): 929 932 930 933 return """<a href="%s">%s</a>"""%(URLGen( categ ), categ.getName()) 931 934 932 935 def _getMultipleCategHTML( self, categList, URLGen ): 933 936 l = [] … … 939 942 <input type="submit" class="btn" value="_("go")"> 940 943 </form>""")%(URLGen(), "".join(l)) 941 942 def getVars( self ): 943 944 945 def getVars( self ): 946 944 947 vars = WTemplated.getVars( self ) 945 948 #raise "%s"%(type(self._conf)) … … 950 953 #raise "%s"%ol 951 954 URLGen = vars.get("categDisplayURLGen", urlHandlers.UHCategoryDisplay.getURL ) 952 955 953 956 try: 954 957 if len(ol)>1: … … 960 963 vars["categ"] = self._getSingleCategHTML( ol, URLGen) 961 964 vars["viewImageURL"] = Configuration.Config.getInstance().getSystemIconURL( "view" ) 962 965 963 966 return vars 964 967 965 968 966 969 class WCategoryModificationHeader(WTemplated): 967 968 970 971 969 972 def __init__( self, category ): 970 973 self._categ = category … … 972 975 def getVars( self ): 973 976 vars = WTemplated.getVars( self ) 974 977 975 978 vars["confTitle"] = self._categ.getName() 976 979 vars["title"] = self._categ.getName() … … 981 984 vars["eventCaption"]= "Category" 982 985 return vars 983 986 984 987 def getIntermediateVTabPixels( self ): 985 988 return 0 986 989 987 990 def getTitleTabPixels( self ): 988 991 return 260 989 992 990 993 class WConfModifHeader(WTemplated): 991 994 992 995 def __init__( self, conf, aw ): 993 996 self._conf = conf … … 1017 1020 type = "lecture" 1018 1021 vars["eventCaption"]=type.capitalize()#"Event" 1019 1020 1022 1023 1021 1024 return vars 1022 1025 1023 1026 1024 1027 class WSessionModifHeader(WTemplated): 1025 1028 1026 1029 def __init__( self, session, aw ): 1027 1030 self._session = session … … 1042 1045 1043 1046 class WBreakModifHeader(WTemplated): 1044 1047 1045 1048 def __init__( self, breakSlot, aw ): 1046 1049 self._break = breakSlot … … 1058 1061 1059 1062 class WContribModifHeader(WTemplated): 1060 1063 1061 1064 def __init__( self, contrib, aw): 1062 1065 self._contrib = contrib … … 1075 1078 vars = WTemplated.getVars( self ) 1076 1079 vars["imgGestionGrey"] = Configuration.Config.getInstance().getSystemIconURL( "gestionGrey" ) 1077 vars["title"] = escape(self._contrib.getTitle()) 1080 vars["title"] = escape(self._contrib.getTitle()) 1078 1081 urlGen = vars.get( "contribDisplayURLGen", urlHandlers.UHContributionDisplay.getURL ) 1079 1082 vars["contribDisplayURL"] = urlGen(self._contrib) … … 1084 1087 1085 1088 class WContribModifTool(WTemplated): 1086 1089 1087 1090 def __init__( self, contrib ): 1088 1091 self._contrib = contrib 1089 1092 1090 1093 def getVars( self ): 1091 1094 vars = WTemplated.getVars( self ) … … 1094 1097 vars["writeIconURL"] = Configuration.Config.getInstance().getSystemIconURL("write_minutes") 1095 1098 return vars 1096 1099 1097 1100 1098 1101 1099 1102 class WContributionDeletion(object): 1100 1103 1101 1104 def __init__( self, contribList ): 1102 1105 self._contribList = contribList … … 1121 1124 </ul> 1122 1125 </td></tr> 1123 </table> 1126 </table> 1124 1127 """)%("".join(l)) 1125 1128 wc = WConfirmation() … … 1138 1141 1139 1142 class WContribModifSC(WTemplated): 1140 1143 1141 1144 def __init__( self, contrib ): 1142 1145 self._contrib = contrib 1143 1146 self._conf = self._contrib.getConference() 1144 1147 1145 1148 1146 1149 def getSubContItems(self,SCModifURL): … … 1170 1173 </table>"""%"".join( temp ) 1171 1174 return html 1172 1175 1173 1176 def getVars( self ): 1174 1177 vars = WTemplated.getVars( self ) … … 1178 1181 vars["contribId"] = self._contrib.getId() 1179 1182 vars["deleteItemsURL"] = vars["moveSubContribURL"] 1180 1183 1181 1184 return vars 1182 1185 ###ness################################################################################## … … 1209 1212 1210 1213 class WMaterialModifHeader(WTemplated): 1211 1214 1212 1215 def __init__( self, material, aw ): 1213 1216 self._mat = material … … 1237 1240 return vars 1238 1241 1239 1242 1240 1243 class WConferenceModifFrame(WTemplated): 1241 1244 1242 1245 def __init__( self, conference, aw,): 1243 1246 self.__conf = conference … … 1246 1249 def getHTML( self, body, **params ): 1247 1250 params["body"] = body 1248 return WTemplated.getHTML( self, params ) 1251 return WTemplated.getHTML( self, params ) 1249 1252 1250 1253 def getVars( self ): … … 1255 1258 1256 1259 return vars 1257 1260 1258 1261 class WCategoryModifFrame(WTemplated): 1259 1262 1260 1263 def __init__( self, conference): 1261 1264 self.__conf = conference 1262 1265 1263 1266 1264 1267 def getHTML( self, body, **params ): 1265 1268 params["body"] = body 1266 return WTemplated.getHTML( self, params ) 1269 return WTemplated.getHTML( self, params ) 1267 1270 1268 1271 def getVars( self ): … … 1279 1282 return vars 1280 1283 1281 1284 1282 1285 def getIntermediateVTabPixels( self ): 1283 1286 return 0 1284 1287 1285 1288 def getTitleTabPixels( self ): 1286 1289 return 260 1287 1290 1288 1291 def getCloseHeaderTags( self ): 1289 1292 return "" 1290 1293 1291 1294 class WNotifTPLModifFrame(WTemplated): 1292 1295 1293 1296 def __init__(self, notifTpl, aw): 1294 1297 self._notifTpl = notifTpl 1295 1298 self._aw = aw 1296 1299 1297 1300 def getHTML( self, body, **params ): 1298 1301 params["body"] = body 1299 1302 return WTemplated.getHTML( self, params ) 1300 1303 1301 1304 def getVars( self ): 1302 1305 vars = WTemplated.getVars( self ) … … 1313 1316 wc = WConferenceModifFrame(owner, self._aw) 1314 1317 return wc 1315 1318 1316 1319 def getIntermediateVTabPixels( self ): 1317 1320 wc = self.getOwnerComponent() 1318 1321 return 7 + wc.getIntermediateVTabPixels() 1319 1322 1320 1323 def getTitleTabPixels( self ): 1321 1324 wc = self.getOwnerComponent() 1322 1325 return wc.getTitleTabPixels() - 7 1323 1326 1324 1327 def getCloseHeaderTags( self ): 1325 1328 wc = self.getOwnerComponent() … … 1328 1331 1329 1332 class WScheduleContributionModifFrame(WTemplated): 1330 1333 1331 1334 def __init__( self, contribution, aw, days, handler=urlHandlers.UHContributionModification): 1332 1335 self._contrib = contribution … … 1336 1339 self._handler = handler 1337 1340 1338 def getHTML( self, body, **params ): 1339 1341 def getHTML( self, body, **params ): 1342 1340 1343 params["body"] = body 1341 1344 1342 1345 dateList = [d.getDate() for d in self._days] 1343 1346 1344 1347 # Keep contributions that happen in the selected day(s) 1345 1348 … … 1350 1353 1351 1354 ### 1352 1355 1353 1356 l = [] 1354 1357 for contrib in self._conf.getContributionList(): … … 1357 1360 params["contribList"] = l 1358 1361 params["handler"] = self._handler 1359 1362 1360 1363 return WTemplated.getHTML( self, params ) 1361 1364 1362 1365 class WContributionModifFrame(WTemplated): 1363 1366 1364 1367 def __init__( self, contribution, aw): 1365 1368 self._contrib = contribution … … 1377 1380 1378 1381 class WMaterialModifFrame(WTemplated): 1379 1382 1380 1383 def __init__( self, material, aw): 1381 1384 self._material = material … … 1395 1398 elif isinstance(owner, conference.Session): 1396 1399 wc = WSessionModifHeader( owner, self._aw ) 1397 elif isinstance(owner, conference.SubContribution): 1400 elif isinstance(owner, conference.SubContribution): 1398 1401 wc = WSubContribModifHeader( owner, self._aw ) 1399 1402 elif isinstance(owner, conference.Category) : 1400 wc = WCategoryModificationHeader(owner) 1401 else: 1403 wc = WCategoryModificationHeader(owner) 1404 else: 1402 1405 wc = WConfModifHeader( owner, self._aw ) 1403 1406 vars["context"] = wc.getHTML( vars ) … … 1408 1411 vars["materialDisplayURL"] = vars["materialDisplayURLGen"]( self._material ) 1409 1412 return vars 1410 1413 1411 1414 def getOwnerComponent( self ): 1412 1415 owner = self._material.getOwner() … … 1417 1420 elif isinstance(owner, conference.SubContribution): 1418 1421 wc = WSubContributionModifFrame(owner, self._aw) 1419 1422 1420 1423 else: 1421 1424 wc = WConferenceModifFrame(owner, self._aw) 1422 1425 return wc 1423 1426 1424 1427 def getIntermediateVTabPixels( self ): 1425 1428 wc = self.getOwnerComponent() 1426 1429 return 7 + wc.getIntermediateVTabPixels() 1427 1430 1428 1431 def getTitleTabPixels( self ): 1429 1432 wc = self.getOwnerComponent() 1430 1433 return wc.getTitleTabPixels() - 7 1431 1434 1432 1435 def getCloseHeaderTags( self ): 1433 1436 wc = self.getOwnerComponent() … … 1436 1439 1437 1440 class WResourceModifFrame(WTemplated): 1438 1441 1439 1442 def __init__( self, resource, aw): 1440 1443 self._resource = resource … … 1454 1457 vars["closeHeaderTags"] = self.getCloseHeaderTags() 1455 1458 return vars 1456 1459 1457 1460 def getOwnerComponent( self ): 1458 1461 owner = self._resource.getOwner() 1459 1462 wc = WMaterialModifFrame(owner, self._aw) 1460 1463 return wc 1461 1464 1462 1465 def getIntermediateVTabPixels( self ): 1463 1466 wc = self.getOwnerComponent() 1464 1467 return 7 + wc.getIntermediateVTabPixels() 1465 1468 1466 1469 def getTitleTabPixels( self ): 1467 1470 wc = self.getOwnerComponent() 1468 1471 return wc.getTitleTabPixels() - 7 1469 1472 1470 1473 def getCloseHeaderTags( self ): 1471 1474 wc = self.getOwnerComponent() … … 1483 1486 1484 1487 class ModifFrameFactory: 1485 1488 1486 1489 def getFrameClass( cls, target ): 1487 1490 if isinstance(target, conference.Conference): … … 1501 1504 return None 1502 1505 getFrameClass = classmethod( getFrameClass ) 1503 1506 1504 1507 def getModifFrame( target ): 1505 1508 f = ModifFrameFactory.getFrameClass( target ) … … 1511 1514 1512 1515 class WSubContributionDisplay: 1513 1516 1514 1517 def __init__(self, aw, subContrib): 1515 1518 self._aw = aw … … 1526 1529 1527 1530 class WSubContributionDisplayBase(WTemplated): 1528 1531 1529 1532 def __init__(self, aw, subContrib): 1530 1533 self._aw = aw … … 1576 1579 1577 1580 class WMaterialDisplayItem(WTemplated): 1578 1581 1579 1582 def getHTML( self, aw, material, URL="", icon=Configuration.Config.getInstance().getSystemIconURL( "material" ) ): 1580 1583 if material.canView( aw ): 1581 1584 1582 1585 return """<a href=%s>%s</a>"""%(quoteattr( str( URL ) ), WTemplated.htmlText( material.getTitle() ) ) 1583 1586 return "" … … 1585 1588 1586 1589 class WBreakDataModification(WTemplated): 1587 1590 1588 1591 def __init__(self,sch,breakEntry=None,targetDay=None,conf=None): 1589 1592 self._break=breakEntry … … 1661 1664 vars["ownerRoom"] = ownerRoom.getName() 1662 1665 vars["roomName"] = quoteattr(str(roomName)) 1663 1666 1664 1667 vars["WPtitle"]=wpTitle 1665 1668 vars["title"]=quoteattr(str(title)) … … 1706 1709 vars['rbActive'] = info.HelperMaKaCInfo.getMaKaCInfoInstance().getRoomBookingModuleActive() 1707 1710 return vars 1708 1711 1709 1712 1710 1713 class WMaterialTable( WTemplated ): 1711 1714 # Deprecated - used in old file management scheme 1712 1715 1713 1716 def __init__(self, matOwner, registry = None ): 1714 1717 self._owner = matOwner 1715 1718 self._fr = registry 1716 1719 1717 1720 def _getAdditionalMaterialItems( self ): 1718 1721 l = [] … … 1740 1743 return "".join(l) 1741 1744 1742 def _getSpecialMaterialItems( self ): 1745 def _getSpecialMaterialItems( self ): 1743 1746 if not self._fr: 1744 1747 return "" … … 1776 1779 1777 1780 hiddenParams = self._owner.getLocator().getWebForm() 1778 1781 1779 1782 return WTemplated.getHTML( self, params ) 1780 1783 … … 1795 1798 1796 1799 class WAccessControlFrame(WTemplated): 1797 1800 1798 1801 def getHTML( self, target, setVisibilityURL, addAllowedURL, removeAllowedURL): 1799 1802 self.__target = target … … 1825 1828 1826 1829 return vars 1827 1830 1828 1831 1829 1832 class WConfAccessControlFrame(WTemplated): 1830 1833 1831 1834 def getHTML( self, target, setVisibilityURL, addAllowedURL, removeAllowedURL, setAccessKeyURL): 1832 1835 self.__target = target … … 1838 1841 1839 1842 def getVars( self ): 1840 vars = WTemplated.getVars( self ) 1843 vars = WTemplated.getVars( self ) 1841 1844 if self.__target.getAccessProtectionLevel() == -1: 1842 1845 vars["privacy"] = "ABSOLUTELY PUBLIC%s" % WInlineContextHelp('The object will stay public regardless of the protection of its parent (no more inheritance)').getHTML() … … 1859 1862 vars["changePrivacy"] = """make it <input type="submit" class="btn" name="visibility" value="PRIVATE"> by itself<br/>""" 1860 1863 vars["changePrivacy"] += """make it <input type="submit" class="btn" name="visibility" value="ABSOLUTELY PUBLIC">%s""" % WInlineContextHelp('The object will stay public regardless of the protection of its parent').getHTML() 1861 1864 1862 1865 vars["locator"] = self.__target.getLocator().getWebForm() 1863 1866 vars["userTable"] = WPrincipalTable().getHTML( self.__target.getAllowedToAccessList(), … … 1919 1922 1920 1923 class WGroupTableItem(WTemplated): 1921 1924 1922 1925 def __init__(self, multi=True): 1923 1926 self._multi = multi 1924 1927 1925 1928 def getHTML( self, group, selected=False, selectable=True ): 1926 1929 self.__group = group … … 1946 1949 1947 1950 class WGroupNICETableItem(WTemplated): 1948 1951 1949 1952 def __init__(self, multi=True): 1950 1953 self._multi = multi 1951 1954 1952 1955 def getHTML( self, group, selected=False, selectable=True ): 1953 1956 self.__group = group … … 1972 1975 1973 1976 class WAuthorTableItem(WTemplated): 1974 1977 1975 1978 def __init__(self, multi=False): 1976 1979 self._multi = multi 1977 1980 1978 1981 def getHTML( self, author, selected=False ): 1979 1982 self.__author = author … … 1997 2000 1998 2001 class WPrincipalTable(WTemplated): 1999 2002 2000 2003 def getHTML( self, principalList, target, addPrincipalsURL, removePrincipalsURL, pendings=[], selectable=True ): 2001 2004 self.__principalList = principalList … … 2030 2033 2031 2034 class WModificationControlFrame(WTemplated): 2032 2035 2033 2036 def getHTML( self, target, addManagersURL, removeManagersURL ): 2034 2037 self.__target = target … … 2040 2043 vars = WTemplated.getVars( self ) 2041 2044 vars["locator"] = self.__target.getLocator().getWebForm() 2042 vars["principalTable"] = WPrincipalTable().getHTML( self.__target.getManagerList(), 2045 vars["principalTable"] = WPrincipalTable().getHTML( self.__target.getManagerList(), 2043 2046 self.__target,vars["addManagersURL"], 2044 2047 vars["removeManagersURL"], 2045 2048 pendings=self.__target.getAccessController().getModificationEmail(), 2046 2049 selectable=False) 2047 2050 2048 2051 return vars 2049 2052 2050 2053 2051 2054 class WConfModificationControlFrame(WTemplated): 2052 2055 2053 2056 def getHTML( self, target, addManagersURL, removeManagersURL, setModifKeyURL ): 2054 2057 self.__target = target … … 2061 2064 vars = WTemplated.getVars( self ) 2062 2065 vars["locator"] = self.__target.getLocator().getWebForm() 2063 vars["principalTable"] = WPrincipalTable().getHTML( self.__target.getManagerList(), 2066 vars["principalTable"] = WPrincipalTable().getHTML( self.__target.getManagerList(), 2064 2067 self.__target, vars["addManagersURL"], 2065 2068 vars["removeManagersURL"], … … 2070 2073 2071 2074 class WConfRegistrarsControlFrame(WTemplated): 2072 2075 2073 2076 def getHTML(self, target, addRegistrarURL, removeRegistrarURL): 2074 2077 self.__target = target … … 2086 2089 2087 2090 class WAlarmFrame(WTemplated): 2088 2091 2089 2092 def getHTML( self, target, addAlarmURL, deleteAlarmURL, modifyAlarmURL ): 2090 2093 self.__target = target … … 2093 2096 params = { "addAlarmURL": addAlarmURL, \ 2094 2097 "deleteAlarmURL": deleteAlarmURL, \ 2095 "modifyAlarmURL": modifyAlarmURL 2098 "modifyAlarmURL": modifyAlarmURL 2096 2099 } 2097 2100 return WTemplated.getHTML( self, params ) … … 2107 2110 for user in al.getToUserList(): 2108 2111 addr = addr + user.getEmail() + " <br> " 2109 2112 2110 2113 if al.getToAllParticipants() : 2111 2114 addr = "to all participants" … … 2151 2154 2152 2155 class WDomainControlFrame(WTemplated): 2153 2156 2154 2157 def __init__( self, target ): 2155 2158 self._target = target … … 2169 2172 for dom in domain.DomainHolder().getList(): 2170 2173 if dom not in self._target.getDomainList(): 2171 l.append("""<option value="%s">%s</option>"""%(dom.getId(), dom.getName())) 2174 l.append("""<option value="%s">%s</option>"""%(dom.getId(), dom.getName())) 2172 2175 vars["domainsToAdd"] = "".join(l) 2173 2176 vars["removeURL"] = self._removeURL … … 2175 2178 vars["locator"] = self._target.getLocator().getWebForm() 2176 2179 return vars 2177 2178 2180 2181 2179 2182 class WMaterialDataModificationBase(WTemplated): 2180 2183 2181 2184 def __init__( self, material ): 2182 2185 self._material = material 2183 2186 self._owner = material.getOwner() 2184 2187 2185 2188 def _setMaterialValues( self, material, materialData ): 2186 2189 material.setTitle( materialData["title"] ) … … 2188 2191 if "type" in materialData: 2189 2192 material.setType( materialData["type"] ) 2190 2193 2191 2194 def _getTypesSelectItems( self, default = "misc" ): 2192 2195 definedTypes = ["misc"] … … 2202 2205 2203 2206 class WMaterialCreation(WMaterialDataModificationBase): 2204 2207 2205 2208 def __init__( self, owner): 2206 2209 self._owner = owner 2207 2210 2208 2211 2209 2212 def getVars( self ): 2210 2213 vars = WMaterialDataModificationBase.getVars( self ) … … 2214 2217 vars["locator"] = self._owner.getLocator().getWebForm() 2215 2218 return vars 2216 2219 2217 2220 def create( self, materialData ): 2218 2221 m = conference.Material() … … 2220 2223 self._owner.addMaterial( m ) 2221 2224 return m 2222 2225 2223 2226 class WInlineContextHelp(WTemplated): 2224 2227 … … 2231 2234 vars["imgSrc"] = Config.getInstance().getSystemIconURL( "help" ) 2232 2235 return vars 2233 2236 2234 2237 #class WPaperDataModification( WMaterialDataModification ): 2235 2238 # pass 2236 2239 2237 2240 #class WMaterialModification( WTemplated ): 2238 # 2241 # 2239 2242 # def __init__( self, material ): 2240 2243 # self._material = material … … 2242 2245 # self.__session = material.getSession() 2243 2246 # self.__contrib = material.getContribution() 2244 # 2247 # 2245 2248 # def getVars( self ): 2246 2249 # vars = WTemplated.getVars( self ) … … 2293 2296 # self._matParent = self._contrib 2294 2297 # if materialId != None and materialId != "": 2295 # self._material = self._matParent.getMaterialById( materialId ) 2298 # self._material = self._matParent.getMaterialById( materialId ) 2296 2299 # 2297 2300 # def getHTML( self, confId, sessionId, contribId, materialId, params ): … … 2311 2314 2312 2315 #class WFileSubmission(WTemplated): 2313 # 2316 # 2314 2317 # def __init__(self, material): 2315 2318 # self.__material = material … … 2337 2340 2338 2341 #class WLinkSubmission(WResourceSubmission): 2339 # 2342 # 2340 2343 # def __init__(self, material): 2341 2344 # self.__material = material … … 2362 2365 2363 2366 class WResourceModification(WTemplated): 2364 2367 2365 2368 def __init__( self, resource ): 2366 2369 self._resource = resource … … 2369 2372 self._contrib = resource.getContribution() 2370 2373 self._material = resource.getOwner() 2371 2374 2372 2375 def getVars( self ): 2373 2376 vars = WTemplated.getVars( self ) … … 2390 2393 vars["setModifKeyURL"] ) 2391 2394 return vars 2392 2395 2393 2396 2394 2397 class WResourceDataModification(WResourceModification): 2395 2398 2396 2399 def getHTML(self, params): 2397 2400 str = """ … … 2403 2406 self._resource.getLocator().getWebForm(),\ 2404 2407 WTemplated.getHTML( self, params ) ) 2405 return str 2408 return str 2406 2409 2407 2410 def getVars( self ): … … 2413 2416 2414 2417 class WUserRegistration(WTemplated): 2415 2418 2416 2419 def __init__( self, av = None ): 2417 2420 self._avatar = av … … 2455 2458 vars = self.__defineExistingUserVars( vars ) 2456 2459 vars["locator"] = self._avatar.getLocator().getWebForm() 2457 2460 2458 2461 #note: there's a reason this line is TitlesRegistry() and not just TitlesRegistry 2459 2462 #methods in TitlesRegistry cannot be classmethods because _items cannot be a class … … 2475 2478 2476 2479 class WUserCreated(WTemplated): 2477 2480 2478 2481 def __init__( self, av = None ): 2479 2482 self._avatar = av 2480 2483 2481 2484 def getVars( self ): 2482 2485 vars = WTemplated.getVars( self ) … … 2491 2494 2492 2495 class WUserSendIdentity(WTemplated): 2493 2496 2494 2497 def __init__( self, av = None ): 2495 2498 self._avatar = av 2496 2499 2497 2500 def getVars( self ): 2498 2501 vars = WTemplated.getVars( self ) … … 2509 2512 2510 2513 class WUserSearchResultsTable( WTemplated ): 2511 2514 2512 2515 def __init__(self, multi=True): 2513 2516 self._multi = multi … … 2523 2526 return WAuthorTableItem 2524 2527 return None 2525 2528 2526 2529 def getHTML( self, resultList ): 2527 2530 self.__resultList = resultList … … 2544 2547 return vars 2545 2548 2546 2549 2547 2550 class WSignIn(WTemplated): 2548 2551 … … 2570 2573 2571 2574 class WConfirmation(WTemplated): 2572 2575 2573 2576 def getHTML( self, message, postURL, passingArgs, **opts): 2574 2577 params = {} … … 2588 2591 2589 2592 class WDisplayConfirmation(WTemplated): 2590 2593 2591 2594 def getHTML( self, message, postURL, passingArgs, **opts): 2592 2595 params = {} … … 2612 2615 self._sections = [] 2613 2616 self._userStatus = userStatus 2614 2615 def addSection(self, section, top=False): 2617 2618 def addSection(self, section, top=False): 2616 2619 if top: 2617 2620 self._sections.insert(0, section) 2618 2621 else: 2619 2622 self._sections.append(section) 2620 2623 2621 2624 def getSections(self): 2622 2625 return self._sections 2623 2626 2624 2627 class ManagementSideMenu(SideMenu): 2625 2628 2626 2629 def getHTML(self): 2627 2630 return WSideMenu(self, self._userStatus, type="management").getHTML() 2628 2631 2629 2632 class BasicSideMenu(SideMenu): 2630 2633 2631 2634 def getHTML(self): 2632 2635 return WSideMenu(self, self._userStatus, type="basic").getHTML() 2633 2636 2634 2637 class SideMenuSection: 2635 """ class coment 2638 """ class coment 2636 2639 """ 2637 2640 2638 2641 def __init__(self, title=None, active=False, currentPage = None, visible=True): 2639 2642 """ -title is the words that will be displayed int he side menu. … … 2653 2656 def getItems(self): 2654 2657 return self._items 2655 2658 2656 2659 def addItem(self, item): 2657 2660 self._items.append(item) 2658 2661 item.setSection(self) 2659 2662 2660 2663 def isActive(self): 2661 2664 return self._active 2662 2665 2663 2666 def setActive(self, val): 2664 2667 self._active = val 2665 2668 2666 2669 def checkActive(self): 2667 2670 2668 2671 self._active = False 2669 2672 2670 2673 for item in self._items: 2671 2674 if item.isActive(): 2672 2675 self._active = True 2673 2676 break 2674 2677 2675 2678 def getCurrentPage(self): 2676 2679 return self._currentPage 2677 2680 2678 2681 def setCurrentPage(self, currentPage): 2679 2682 self._currentPage = currentPage 2680 2683 2681 2684 def isVisible(self): 2682 2685 return self._visible 2683 2686 2684 2687 def setVisible(self, visible): 2685 2688 self._visible = visible 2686 2689 2687 2690 def hasVisibleItems(self): 2688 2691 for item in self._items: … … 2690 2693 return True 2691 2694 return False 2692 2695 2693 2696 class SideMenuItem: 2694 2697 2695 2698 def __init__(self, title, url, active=False, enabled=True, errorMessage = "msgNoPermissions", visible=True): 2696 2699 """ errorMessage: one of the error messages in SideMenu.wohl … … 2702 2705 self._errorMessage = errorMessage 2703 2706 self._visible = visible 2704 2707 2705 2708 def getTitle(self): 2706 2709 return self._title; 2707 2710 2708 2711 def setSection(self, section): 2709 2712 self._section = section 2710 2713 2711 2714 def getURL(self): 2712 2715 return self._url 2713 2716 2714 2717 def setURL(self, url): 2715 2718 self._url = url 2716 2719 2717 2720 def isActive(self): 2718 2721 return self._active 2719 2722 2720 2723 def isEnabled(self): 2721 2724 return self._enabled 2722 2725 2723 2726 def getErrorMessage(self): 2724 2727 return self._errorMessage 2725 2728 2726 2729 def setActive(self, val=True): 2727 2730 self._active = val 2728 2731 self._section.checkActive() 2729 2732 2730 2733 def setEnabled(self, val): 2731 2734 self._enabled = val 2732 2735 2733 2736 def setErrorMessage(self, val): 2734 2737 self._errorMessage = val 2735 2738 2736 2739 def isVisible(self): 2737 2740 return self._visible 2738 2741 2739 2742 def setVisible(self, visible): 2740 2743 self._visible = visible 2741 2744 2742 2745 class WSideMenu(WTemplated): 2743 2746 2744 2747 def __init__(self, menu, loggedIn, type="basic"): 2745 2748 """ … … 2748 2751 self._menu = menu 2749 2752 self._type = type 2750 2753 2751 2754 # is the user logged in? used for changing some tooltips 2752 2755 self._loggedIn = loggedIn 2753 2756 2754 2757 def getVars(self): 2755 2758 vars = WTemplated.getVars(self) 2756 2759 2757 2760 vars['menu'] = self._menu 2758 2761 vars['loggedIn'] = self._loggedIn … … 2789 2792 def setCurrentItem( self, item ): 2790 2793 self.currentItem = item 2791 2794 2792 2795 def isFirstItem( self, item): 2793 2796 return self.items[0] == item 2794 2797 2795 2798 def isLastItem( self, item ): 2796 2799 return self.items[len(self.items)-1] == item 2797 2800 2798 2801 def getHTML( self ): 2799 2802 return WTBDrawer(self).getHTML() … … 2801 2804 2802 2805 class WTBItem: 2803 2806 2804 2807 def __init__( self, caption, **args): 2805 2808 self.owner = None … … 2837 2840 def isEnabled( self ): 2838 2841 return self.enabled 2839 2842 2840 2843 def hasIcon( self ): 2841 return self.icon != "" 2844 return self.icon != "" 2842 2845 2843 2846 def addItem( self, newItem ): … … 2845 2848 self.subItems.append( newItem ) 2846 2849 newItem.setOwner( self.owner ) 2847 2850 2848 2851 def removeItem( self, item ): 2849 2852 if item in self.subItems: … … 2852 2855 def getItemList( self ): 2853 2856 return self.subItems 2854 2857 2855 2858 def isFirstItem( self, item): 2856 2859 return self.subItems[0] == item 2857 2860 2858 2861 def isLastItem( self, item ): 2859 2862 i = len(self.subItems)-1 … … 2863 2866 2864 2867 def setOwner( self, owner ): 2865 self.owner = owner 2868 self.owner = owner 2866 2869 for item in self.getItemList(): 2867 2870 item.setOwner( self.owner ) … … 2869 2872 2870 2873 class WTBSeparator(WTBItem): 2871 2874 2872 2875 def __init__( self ): 2873 2876 WTBItem.__init__(self, "") 2874 2877 2875 2878 def setCurrent( self ): 2876 return 2879 return 2877 2880 2878 2881 class WTBGroup( WTBItem ): 2879 2882 2880 2883 def __init__( self, caption, **args ): 2881 2884 WTBItem.__init__( self, caption, **args ) … … 2886 2889 self.items.append( newItem ) 2887 2890 newItem.setOwner( self.owner ) 2888 2891 2889 2892 def removeItem( self, item ): 2890 2893 if item in self.items: … … 2893 2896 def getItemList( self ): 2894 2897 return self.items 2895 2898 2896 2899 def isFirstItem( self, item): 2897 2900 return self.items[0] == item 2898 2901 2899 2902 def isLastItem( self, item ): 2900 2903 i = len(self.items)-1 … … 2902 2905 i -= 1 2903 2906 return self.items[i] == item 2904 2907 2905 2908 def setOwner( self, owner ): 2906 self.owner = owner 2909 self.owner = owner 2907 2910 for item in self.getItemList(): 2908 2911 item.setOwner( self.owner ) 2909 2912 2910 2913 class WTBSection( WTBItem ): 2911 2914 2912 2915 def __init__( self, caption, **args ): 2913 2916 WTBItem.__init__( self, caption, **args ) … … 2919 2922 self.items.append( newItem ) 2920 2923 newItem.setOwner( self.owner ) 2921 2924 2922 2925 def removeItem( self, item ): 2923 2926 if item in self.items: … … 2926 2929 def getItemList( self ): 2927 2930 return self.items 2928 2931 2929 2932 def isFirstItem( self, item): 2930 2933 return self.items[0] == item 2931 2934 2932 2935 def isLastItem( self, item ): 2933 2936 i = len(self.items)-1 … … 2935 2938 i -= 1 2936 2939 return self.items[i] == item 2937 2940 2938 2941 def setOwner( self, owner ): 2939 self.owner = owner 2942 self.owner = owner 2940 2943 for item in self.getItemList(): 2941 2944 item.setOwner( self.owner ) 2942 2945 2943 2946 def setDrawer( self, d ): 2944 2947 self.drawer = d(self) 2945 2948 2946 2949 def getDrawer( self ): 2947 2950 return self.drawer 2948 2951 2949 2952 def hasDrawer( self ): 2950 2953 return self.drawer != None … … 2953 2956 def __init__( self, toolbar ): 2954 2957 self.toolbar = toolbar 2955 2958 2956 2959 def getHTML( self ): 2957 2960 l = [] … … 2967 2970 l.append(drawer.getHTML()) 2968 2971 return "".join(l) 2969 2972 2970 2973 class WStdTBDrawer(WTemplated): 2971 2974 2972 2975 def __init__( self, item ): 2973 2976 self.item = item 2974 2977 2975 2978 def _getTBItemCaption( self, item): 2976 2979 return """<tr> … … 2989 2992 style="vertical-align:middle" alt=""></td>"""%(style,\ 2990 2993 Configuration.Config.getInstance().getSystemIconURL("arrowLeft")) 2991 2994 2992 2995 def _getIconHTML( self, item, style ): 2993 2996 return """<td class="%s"> <img src="%s" alt="" hspace="3" vspace="2"> … … 3034 3037 vars = WTemplated.getVars( self ) 3035 3038 l = [] 3036 3039 3037 3040 if self.item != None: 3038 3041 for tbItem in self.item.getItemList(): … … 3058 3061 vars["items"] = "".join(l) 3059 3062 return vars 3060 3063 3061 3064 3062 3065 class WStdSectionDrawer(WStdTBDrawer): … … 3118 3121 item.getCaption()) 3119 3122 return str 3120 3123 3121 3124 def _getCurrentIconForItem( self, item, style ): 3122 3125 if item.hasIcon(): 3123 3126 return self._getIconHTML(item, style) 3124 3127 return "" 3125 3128 3126 3129 def _getStyleForItem( self): 3127 3130 return "menuadd" … … 3150 3153 3151 3154 class WConferenceListEvents(WTemplated): 3152 3155 3153 3156 def __init__( self, items, aw): 3154 3157 self._items = items 3155 3158 self._aw = aw 3156 3157 def getVars( self ): 3158 vars = WTemplated.getVars( self ) 3159 vars["items"] = self._items 3159 3160 def getVars( self ): 3161 vars = WTemplated.getVars( self ) 3162 vars["items"] = self._items 3160 3163 vars["conferenceDisplayURLGen"] = urlHandlers.UHConferenceDisplay.getURL 3161 3164 vars["aw"] = self._aw … … 3164 3167 3165 3168 class WConferenceList(WTemplated): 3166 3169 3167 3170 def __init__( self, category, wfReg ): 3168 3171 self._categ = category … … 3175 3178 @staticmethod 3176 3179 def sortEvents(list): 3177 3180 3178 3181 # populate a year -> month -> day -> event (4 level) tree in O(N) time 3179 3182 # each node is a dictionary, so that O(1) is reached for lookup of leaves 3180 3183 3181 3184 def __addLeaf(map, path, leaf): 3182 3185 3183 3186 # stop condition 3184 3187 if path == []: 3185 3188 map[leaf.getId()] = leaf 3186 3189 return; 3187 3190 3188 3191 if not map.has_key(path[0]): 3189 3192 map[path[0]] = {} # virgin node 3190 3193 3191 3194 # this reminds me of Prolog... beautiful... 3192 3195 __addLeaf(map[path[0]], path[1:], leaf) 3193 3196 3194 3197 fList = {} 3195 3198 listByMonth = {} … … 3200 3203 listByMonth.setdefault(startDate.year,{}).setdefault(startDate.month,[]).append(conf) 3201 3204 return fList, listByMonth 3202 3205 3203 3206 def getPresentPastFutureEvents(self, allEvents, eventsByMonth, numEvents): 3204 3207 """ 3205 3208 @param allEvents: is a dictionary with the format expected by the template ConferenceListItem 3206 3209 @param eventsByMonth: is a dictionary with all the events by year and month. E.g. eventsByMonth[2009][1] == [conf1, conf2,...] 3207 @return: 3210 @return: 3208 3211 - a dictionary with the same format as allEvents but just with the events to display 3209 3212 - a dictionary with the same format as allEvents but just with the future events … … 3212 3215 - the oldest date of the events that are shown by default 3213 3216 """ 3214 3217 3215 3218 def getPrevMonth(d): 3216 3219 year = d.year … … 3220 3223 year -= 1 3221 3224 return date(year, prevMonth, 1) 3222 3223 3225 3226 3224 3227 def getNextMonth(d): 3225 3228 year = d.year … … 3230 3233 year += 1 3231 3234 return date(year, nextMonth, 1) 3232 3235 3233 3236 MAX_NUMBER_OF_EVENTS_SHOWN = 10 3234 3237 if numEvents < MAX_NUMBER_OF_EVENTS_SHOWN: 3235 3238 MAX_NUMBER_OF_EVENTS_SHOWN = numEvents 3236 3239 todayDate = nowutc().date() 3237 previousMonthDate, nextMonthDate, newerDateUsed, olderDateUsed = todayDate, todayDate, todayDate, todayDate 3240 previousMonthDate, nextMonthDate, newerDateUsed, olderDateUsed = todayDate, todayDate, todayDate, todayDate 3238 3241 nextMonthDate = todayDate 3239 3242 3240 3243 ## CREATE Present Events dict 3241 3244 presentEvents = {} … … 3246 3249 presentCounter = len(eventsByMonth[todayDate.year][todayDate.month]) 3247 3250 while presentCounter < MAX_NUMBER_OF_EVENTS_SHOWN: 3248 previousMonthDate = getPrevMonth(previousMonthDate) 3251 previousMonthDate = getPrevMonth(previousMonthDate) 3249 3252 nextMonthDate = getNextMonth(nextMonthDate) 3250 3253 # add nextMonth … … 3260 3263 presentCounter += len(eventsByMonth[previousMonthDate.year][previousMonthDate.month]) 3261 3264 olderDateUsed = previousMonthDate 3262 3265 3263 3266 ## CREATE future events dict and future/past counter 3264 3267 futureEvents = {} … … 3280 3283 elif olderDateUsed.year == year and month < olderDateUsed.month: 3281 3284 pastCounter += len(eventsByMonth[year][month]) 3282 3285 3283 3286 return presentEvents, futureEvents, futureCounter, pastCounter, olderDateUsed 3284 3287 … … 3286 3289 vars = WTemplated.getVars( self ) 3287 3290 allEvents, eventsByMonth = WConferenceList.sortEvents(self._list) 3288 #vars["items"], vars["futureItems"], vars["numOfEventsInTheFuture"], vars["numOfEventsInThePast"] = allEvents, allEvents, 0, 0 3291 #vars["items"], vars["futureItems"], vars["numOfEventsInTheFuture"], vars["numOfEventsInThePast"] = allEvents, allEvents, 0, 0 3289 3292 vars["presentItems"], vars["futureItems"], vars["numOfEventsInTheFuture"], vars["numOfEventsInThePast"], vars["oldestMonthDate"] = self.getPresentPastFutureEvents(allEvents, eventsByMonth, len(self._list)) 3290 3293 vars["categ"] = self._categ … … 3295 3298 3296 3299 class WCategoryList(WTemplated): 3297 3300 3298 3301 def __init__( self, categ ): 3299 3302 self._categ = categ … … 3305 3308 3306 3309 def getVars( self ): 3307 3308 vars = WTemplated.getVars( self ) 3310 3311 vars = WTemplated.getVars( self ) 3309 3312 vars["items"] = self._list 3310 3313 vars["categ"] = self._categ; 3311 3314 3312 3315 return vars 3313 3316 … … 3333 3336 3334 3337 class WCategoryStatisticsList(WTemplated): 3335 3338 3336 3339 def __init__( self, statsName, stats ): 3337 3340 self._stats = stats … … 3369 3372 3370 3373 class WConfCreationControlFrame(WTemplated): 3371 3374 3372 3375 def __init__( self, categ ): 3373 3376 self._categ = categ … … 3388 3391 3389 3392 class WWriteMinutes(WTemplated): 3390 3393 3391 3394 def __init__( self, target ): 3392 3395 self._target = target … … 3408 3411 3409 3412 class WMinutesDisplay(WTemplated): 3410 3413 3411 3414 def __init__( self, target ): 3412 3415 self._target = target … … 3418 3421 3419 3422 class TabControl: 3420 3423 3421 3424 def __init__( self, parent=None, child=None ): 3422 3425 self._tabs = [] … … 3452 3455 if tab in self._tabs: 3453 3456 self._active = tab 3454 3457 3455 3458 def getActiveTab( self ): 3456 3459 return self._active … … 3475 3478 # retrieve child TabControl 3476 3479 return self._child 3477 3480 3478 3481 def getLevel( self ): 3479 3482 tmp = self.getParent() … … 3483 3486 tmp = tmp.getParent() 3484 3487 return level 3485 3488 3486 3489 class Tab: 3487 3490 3488 3491 def __init__( self, owner, id, caption, URL, hidden = False ): 3489 3492 self._owner = owner … … 3512 3515 def isDefault( self ): 3513 3516 return self._owner.getDefaultTab() == self 3514 3517 3515 3518 def isActive( self ): 3516 3519 return self._owner.getActiveTab() == self … … 3544 3547 if not self._subtabControl: 3545 3548 self._subtabControl = TabControl(parent=self._owner) 3546 3549 3547 3550 tab=self._subtabControl.newTab( id, caption, url ) 3548 3551 return tab 3549 3552 3550 3553 class WConfModifAC: 3551 3554 3552 3555 def __init__( self, conference ): 3553 3556 self.__conf = conference … … 3569 3572 3570 3573 #class WTrackModifSubTrack( WTemplated ): 3571 # 3574 # 3572 3575 # def __init__( self, track ): 3573 3576 # self.__track = track … … 3588 3591 3589 3592 #class WSubTrackDataModification(WTemplated): 3590 # 3593 # 3591 3594 # def __init__( self, subTrack ): 3592 3595 # self.__subTrack = subTrack 3593 3596 # self.__track = subTrack.getTrack() 3594 # 3597 # 3595 3598 # def getVars( self ): 3596 3599 # vars = WTemplated.getVars(self) 3597 # 3600 # 3598 3601 # vars["title"] = self.__subTrack.getTitle() 3599 3602 # vars["description"] = self.__subTrack.getDescription() 3600 # 3603 # 3601 3604 # vars["locator"] = self.__subTrack.getLocator().getWebForm() 3602 # 3605 # 3603 3606 # return vars 3604 3607 3605 3608 #class WCFAModifFrame(WTemplated): 3606 # 3609 # 3607 3610 # def __init__( self, conf, aw): 3608 3611 # self.__conf = conf … … 3615 3618 # def getVars( self ): 3616 3619 # vars = WTemplated.getVars( self ) 3617 # 3620 # 3618 3621 # vars["context"] = WConfModifHeader( self.__conf, self._aw ).getHTML(vars) 3619 # 3620 # 3622 # 3623 # 3621 3624 # return vars 3622 3625 3623 3626 #class WCFAModifMain(WTemplated): 3624 # 3627 # 3625 3628 # def __init__( self, conf ): 3626 3629 # self.__conf = conf 3627 # 3630 # 3628 3631 # def getVars( self ): 3629 3632 # vars = WTemplated.getVars( self ) 3630 3633 # abMgr = self.__conf.getAbstractMgr() 3631 # 3634 # 3632 3635 # vars["startDate"] = abMgr.getStartSubmissionDate().strftime("%A %d %B %Y") 3633 3636 # vars["endDate"] = abMgr.getEndSubmissionDate().strftime("%A %d %B %Y") 3634 # 3637 # 3635 3638 # typeList = "" 3636 3639 # for type in self._conf.getContribTypeList(): 3637 3640 # typeList += "<input type=\"checkbox\" name=\"types\" value=\"%s\">%s<br>\n"%(type.getId(), type.getName()) 3638 3641 # vars["typeList"] = typeList 3639 # 3642 # 3640 3643 # return vars 3641 3644 3642 3645 #class WCFARefereeList(WTemplated): 3643 # 3646 # 3644 3647 # def __init__( self, conf ): 3645 3648 # self.__conf = conf 3646 # 3649 # 3647 3650 # def getVars( self ): 3648 3651 # vars = WTemplated.getVars(self) … … 3653 3656 _unSelTabCls="Unselected" 3654 3657 _selTabCls="Selected" 3655 3658 3656 3659 def __init__( self, ctrl, accessWrapper, **params ): 3657 3660 self._tabCtrl = ctrl … … 3668 3671 3669 3672 html = [] 3670 3673 3671 3674 # Which css class prefix to use 3672 3675 tabClassPrefix = "" … … 3698 3701 continue 3699 3702 cls=self.__class__._unSelTabCls 3700 3703 3701 3704 # Don't add the right border if in sub level and if last elemnt 3702 3705 borderRight = "" … … 3710 3713 self._activeTab = tab 3711 3714 cls=self.__class__._selTabCls 3712 3715 3713 3716 if tab.getSubTabControl(): 3714 3717 self._getTabsHTML(tab.getSubTabControl(), maxtabs) … … 3716 3719 if (tab.isHidden()): 3717 3720 hasHiddenOptions = True 3718 3721 3719 3722 hiddenClass = ' hiddenTab' 3720 3723 else: … … 3726 3729 if addGradientDiv: 3727 3730 gradientDiv = """<div class="tabGradient"><div class="tabBorderGradient" style="float: left;"></div><div class="tabBorderGradient" style="float: right;"></div></div>""" 3728 3731 3729 3732 cssClass = "" 3730 3733 if tabCtrl.getLevel() == 0: … … 3734 3737 3735 3738 self._tabsBars.append("".join(html)) 3736 3739 3737 3740 return True 3738 3741 … … 3749 3752 self._body = body 3750 3753 return WTemplated.getHTML( self ) 3751 3754 3752 3755 def getVars( self ): 3753 3756 vars = WTemplated.getVars( self ) … … 3759 3762 3760 3763 #class WAbstractFilterCtrl( WTemplated ): 3761 # 3764 # 3762 3765 # def __init__(self, conf, filter, sorter): 3763 3766 # self._filter = filter 3764 3767 # self._conf = conf 3765 3768 # self._sorter = sorter 3766 # 3769 # 3767 3770 # def getVars( self ): 3768 3771 # vars = WTemplated.getVars(self) 3769 3772 # abMgr = self._conf.getAbstractMgr() 3770 # 3773 # 3771 3774 # trackFilter = "<option value=\"\">No filter</option>\n" 3772 3775 # for track in self._conf.getTrackList(): … … 3776 3779 # trackFilter += "<option value=\"%s\" %s>%s</option>\n"%(track.getId(), selected, track.getTitle()) 3777 3780 # vars["trackFilter"] = trackFilter 3778 # 3781 # 3779 3782 # typeFilter = "<option value=\"\">No filter</option>\n" 3780 3783 # for type in self._conf.getContribTypeList(): … … 3784 3787 # typeFilter += "<option value=\"%s\" %s>%s</option>\n"%(type.getId(), selected, type) 3785 3788 # vars["typeFilter"] = typeFilter 3786 # 3789 # 3787 3790 # statusFilter = "<option value=\"\">No filter</option>\n" 3788 3791 # for name in StatusName().getNameList(): … … 3792 3795 # statusFilter += "<option value=\"%s\" %s>%s</option>\n"%(name, selected, name) 3793 3796 # vars["statusFilter"] = statusFilter 3794 # 3797 # 3795 3798 # fDay = "<option value=\"\"> </option>\n" 3796 3799 # for i in range(1,32): … … 3801 3804 # fDay += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, i) 3802 3805 # vars["fDay"] = fDay 3803 # 3806 # 3804 3807 # fMonth = "<option value=\"\"> </option>\n" 3805 3808 # month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] … … 3811 3814 # fMonth += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, month[i-1]) 3812 3815 # vars["fMonth"] = fMonth 3813 # 3816 # 3814 3817 # fYear = "<option value=\"\"> </option>\n" 3815 3818 # for i in range(2000,2011): … … 3820 3823 # fYear += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, i) 3821 3824 # vars["fYear"] = fYear 3822 # 3823 # 3824 # 3825 # 3826 # 3827 # 3825 3828 # tDay = "<option value=\"\"> </option>\n" 3826 3829 # for i in range(1,32): … … 3831 3834 # tDay += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, i) 3832 3835 # vars["tDay"] = tDay 3833 # 3836 # 3834 3837 # tMonth = "<option value=\"\"> </option>\n" 3835 3838 # for i in range(1,13): … … 3840 3843 # tMonth += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, month[i-1]) 3841 3844 # vars["tMonth"] = tMonth 3842 # 3845 # 3843 3846 # tYear = "<option value=\"\"> </option>\n" 3844 3847 # for i in range(2000,2011): … … 3849 3852 # tYear += "<option value=\"%s\" %s>%s</option>\n"%(i, selected, i) 3850 3853 # vars["tYear"] = tYear 3851 # 3852 # 3853 # 3854 # 3855 # 3856 # 3854 3857 # #sortList = ["title", "type", "modification date"] 3855 3858 # selected = "" … … 3870 3873 # sortBy += "<option value=\"status\" %s>Status</option>\n"%selected 3871 3874 # selected = "" 3872 # 3875 # 3873 3876 # if self._sorter["direction"] == "desc": 3874 3877 # vars["ascChecked"] = "" … … 3877 3880 # vars["ascChecked"] = "checked" 3878 3881 # vars["descChecked"] = "" 3879 # 3882 # 3880 3883 # vars["sortBy"] = sortBy 3881 # 3882 # 3884 # 3885 # 3883 3886 # return vars 3884 3887 # 3885 3888 #class WSubTrackCreation( WTemplated ): 3886 # 3889 # 3887 3890 # def __init__( self, track ): 3888 3891 # self.__track = track 3889 # 3892 # 3890 3893 # def getVars( self ): 3891 3894 # vars = WTemplated.getVars(self) … … 3895 3898 3896 3899 #class WSetLogo( WTemplated ): 3897 # 3900 # 3898 3901 # def __init__( self, conference ): 3899 3902 # self.__conf = conference 3900 # 3903 # 3901 3904 # def getVars( self ): 3902 3905 # vars = WTemplated.getVars( self ) 3903 3906 # vars["confTitle"] = self.__conf.getTitle() 3904 # 3907 # 3905 3908 # return vars 3906 3909 3907 3910 class WSelectionBox(WTemplated): 3908 3911 3909 3912 def getVars(self): 3910 3913 vars=WTemplated.getVars(self) … … 3916 3919 vars["table_width"]="" 3917 3920 return vars 3918 3921 3919 3922 class WSelectionBoxAuthors: 3920 3923 3921 3924 def getHTML(self): 3922 3925 wc=WSelectionBox() … … 3931 3934 3932 3935 class WMSelectionBoxAuthors: 3933 3936 3934 3937 def getHTML(self): 3935 3938 wc=WSelectionBox() … … 3943 3946 3944 3947 class WSelectionBoxSubmitter: 3945 3948 3946 3949 def getHTML(self): 3947 3950 wc=WSelectionBox() … … 3991 3994 3992 3995 class WUserSelection(WTemplated): 3993 3996 3994 3997 3995 3998 def __init__( self, searchURL, multi=True, addTo=0, forceWithoutExtAuth=False): … … 4004 4007 #addTo=4: show selection box to add submitter as speaker. This is just for meetings 4005 4008 self._addTo=addTo 4006 4009 4007 4010 def _performSearch( self, criteria, exact=0 ): 4008 4011 ah = user.AvatarHolder() … … 4038 4041 #a.setOrganisation( params["organisation"] ) 4039 4042 #user.AvatarHolder().add( a ) 4040 4043 4041 4044 def _normaliseListParam( self, param ): 4042 4045 if not isinstance(param, list): 4043 4046 return [ param ] 4044 return param 4047 return param 4045 4048 4046 4049 def getHTML( self, params ): … … 4073 4076 vars["searchResultsTable"] = "" 4074 4077 res=[] 4075 4078 4076 4079 if self._action == _("search").strip(): 4077 4080 criteria = { "name": vars["firstName"], \ … … 4126 4129 WUserSelection.__init__(self, searchURL, multi, addTo, forceWithoutExtAuth=forceWithoutExtAuth) 4127 4130 self._conf = conf 4128 4131 4129 4132 4130 4133 def _performSearch( self, criteria, exact=0 ): … … 4147 4150 class WPrincipalSelection(WUserSelection): 4148 4151 4149 4152 4150 4153 def _performSearch( self, criteria, exact=0 ): 4151 4154 #this should go in the PrincipalHolder match method … … 4172 4175 4173 4176 class WComplexSelection(WUserSelection): 4174 4175 4177 4178 4176 4179 def __init__(self, target, searchAction, forceWithoutExtAuth=False): 4177 4180 _title = _("Search for users") … … 4182 4185 self._conf = None 4183 4186 self._target = target 4184 4187 4185 4188 def _performSearch( self, criteria, exact=0 ): 4186 4189 #this should go in the PrincipalHolder match method … … 4201 4204 l.append(author) 4202 4205 return l 4203 4206 4204 4207 def getVars(self): 4205 4208 vars = WUserSelection.getVars( self ) … … 4209 4212 class WCategoryComplexSelection(WComplexSelection): 4210 4213 4211 4214 4212 4215 def __init__(self, category, searchAction, forceWithoutExtAuth=False): 4213 4216 WComplexSelection.__init__(self, None, searchAction,forceWithoutExtAuth=forceWithoutExtAuth) 4214 4217 self._category = category 4215 4218 4216 4219 def _performSearch( self, criteria, exact=0 ): 4217 4220 #this should go in the PrincipalHolder match method … … 4219 4222 resUsers = ah.match(criteria, exact=exact, forceWithoutExtAuth=self._forceWithoutExtAuth) 4220 4223 return resUsers 4221 4224 4222 4225 4223 4226 class WNewPerson(WTemplated): 4224 4227 4225 4228 def getVars( self ): 4226 4229 vars = WTemplated.getVars( self ) … … 4228 4231 titles = [] 4229 4232 titleValue = vars.get("titleValue", " ") 4230 4233 4231 4234 for o in options : 4232 4235 selected = "" … … 4237 4240 vars["titles"] = """ 4238 4241 """.join(titles) 4239 4242 4240 4243 if vars.get("disabledTitle", False) : 4241 4244 vars["titles"] = """<input type="hidden" name="title" value="%s"></input>%s"""%(titleValue,titleValue) … … 4246 4249 </select> 4247 4250 """%vars["titles"] 4248 4251 4249 4252 if vars.get("disabledSurName", False) : 4250 4253 vars["surName"] = """<input type="hidden" name="surName" value="%s"></input>%s"""%(vars["surNameValue"],vars["surNameValue"]) 4251 4254 else : 4252 4255 vars["surName"] = """<input type="text" size="50" name="surName" value="%s" >"""%vars["surNameValue"] 4253 4256 4254 4257 if vars.get("disabledName", False) : 4255 4258 vars["name"] = """<input type="hidden" name="name" value="%s"></input>%s"""%(vars["nameValue"],vars["nameValue"]) 4256 4259 else : 4257 4260 vars["name"] = """<input type="text" size="50" name="name" value="%s" >"""%vars["nameValue"] 4258 4261 4259 4262 if vars.get("disabledAffiliation", False) : 4260 4263 vars["affiliation"] = """<input type="hidden" name="affiliation" value="%s"></input>%s"""%(vars["affiliationValue"],vars["affiliationValue"]) 4261 4264 else : 4262 4265 vars["affiliation"] = """<input type="text" size="50" name="affiliation" value="%s" >"""%vars["affiliationValue"] 4263 4266 4264 4267 if vars.get("disabledEmail", False) : 4265 4268 vars["email"] = """<input type="hidden" name="email" value="%s"></input>%s"""%(vars["emailValue"],vars["emailValue"]) … … 4274 4277 else : 4275 4278 vars["address"] = """<textarea name="address" rows="5" cols="38" value="%s"></textarea>"""%vars["emailValue"] 4276 4279 4277 4280 if vars.get("disabledPhone", False) : 4278 4281 vars["phone"] = """<input type="hidden" name="phone" value="%s"></input>%s"""%(vars["phoneValue"],vars["phoneValue"]) 4279 4282 else : 4280 4283 vars["phone"] = """<input type="text" size="50" name="phone" value="%s" >"""%vars["phoneValue"] 4281 4284 4282 4285 if vars.get("disabledPhone", False) : 4283 4286 vars["phone"] = """<input type="hidden" name="phone" value="%s"></input>%s"""%(vars["phoneValue"],vars["phoneValue"]) 4284 4287 else : 4285 4288 vars["phone"] = """<input type="text" size="50" name="phone" value="%s" >"""%vars["phoneValue"] 4286 4289 4287 4290 if vars.get("disabledFax", False) : 4288 4291 vars["fax"] = """<input type="hidden" name="fax" value="%s"></input>%s"""%(vars["faxValue"],vars["faxValue"]) … … 4292 4295 vars["role"] = "" 4293 4296 else : 4294 vars["role"] = """ 4297 vars["role"] = """ 4295 4298 <tr> 4296 4299 <td nowrap class="titleCellTD"><span class="titleCellFormat">%s</span></td> 4297 4300 <td bgcolor="white" width="100%%" valign="top" class="blacktext">%s</td> 4298 4301 </tr>"""%(vars["roleDescription"], vars["roleValue"]) 4299 4302 4300 4303 if vars.get("disabledNotice", True) : 4301 4304 vars["notice"] = "" … … 4306 4309 <td bgcolor="white" width="100%%" valign="top" class="blacktext">%s</td> 4307 4310 </tr>"""%vars["noticeValue"] 4308 4311 4309 4312 if vars.get("msg","")!="": 4310 4313 vars["msg"]= _("""<table bgcolor="gray"><tr><td bgcolor="white"> … … 4318 4321 4319 4322 class WAddPersonModule(WTemplated): 4320 4323 4321 4324 def __addBasketPeople(self, peopleList): 4322 4325 4323 4326 basket = self._rh._getUser().getPersonalInfo().getBasket().getUsers() 4324 4327 4325 4328 peopleList += """<option value=""></option>""" 4326 4329 4327 4330 for userId in basket: 4328 4331 peopleList += """<option class="favoriteItem" value="%s">%s</option>"""%(userId,basket[userId].getStraightFullName()) 4329 4332 4330 4333 return peopleList 4331 4334 4332 4335 def __init__(self,personType, displayName=""): 4333 4336 self._personType = personType 4334 4337 self._displayName = displayName 4335 4336 def getVars( self ): 4337 vars = WTemplated.getVars( self ) 4338 4339 def getVars( self ): 4340 vars = WTemplated.getVars( self ) 4338 4341 if self._personType is None or self._personType == "" : 4339 4342 raise MaKaCError( _("'personType' must be set to use the Add Person Module")) 4340 4343 return 4341 4344 4342 4345 if self._displayName != "": 4343 4346 vars["personName"] = self._displayName 4344 4347 else: 4345 4348 vars["personName"] = string.capwords("%s"%self._personType) 4346 4347 # Add people from the users basket 4348 vars["personOptions"] = self.__addBasketPeople("") 4349 4350 vars["personOptions"] += vars["%sOptions"%self._personType] 4351 4349 4350 # Add people from the users basket 4351 vars["personOptions"] = self.__addBasketPeople("") 4352 4353 vars["personOptions"] += vars["%sOptions"%self._personType] 4354 4352 4355 vars["personChosen"] = "%sChosen"%self._personType 4353 4356 4354 4357 vars["personDefined"] = vars["%sDefined"%self._personType] 4355 4358 4356 4359 if vars["personOptions"] == """<option value=""> </option>""": 4357 4360 vars["disabledAdd"] = "disabled" … … 4360 4363 4361 4364 vars["personType"] = self._personType 4362 4365 4363 4366 if vars.get("submission",None) is not None : 4364 4367 vars["submissionButtons"] = _(""" … … 4367 4370 </tr> 4368 4371 <tr> 4369 <td colspan="4"><input type="submit" class="btn" value="_("Withdraw submission")" onClick="setAction(this.form,'Withdraw submission');"></td> 4372 <td colspan="4"><input type="submit" class="btn" value="_("Withdraw submission")" onClick="setAction(this.form,'Withdraw submission');"></td> 4370 4373 </tr>""") 4371 4374 else : 4372 4375 vars["submissionButtons"] = "" 4373 4376 return vars 4374 4377 4375 4378 4376 4379 class WAccountAlreadyActivated(WTemplated): 4377 4380 4378 4381 def __init__(self, av): 4379 4382 self._av = av 4380 4383 4381 4384 def getVars( self ): 4382 4385 vars = WTemplated.getVars( self ) … … 4385 4388 4386 4389 class WAccountActivated(WTemplated): 4387 4390 4388 4391 def __init__(self, av): 4389 4392 self._av = av 4390 4393 4391 4394 def getVars( self ): 4392 4395 vars = WTemplated.getVars( self ) … … 4395 4398 4396 4399 class WAccountDisabled(WTemplated): 4397 4400 4398 4401 def __init__(self, av): 4399 4402 self._av = av 4400 4403 4401 4404 def getVars( self ): 4402 4405 vars = WTemplated.getVars( self ) … … 4405 4408 4406 4409 class WUnactivatedAccount(WTemplated): 4407 4410 4408 4411 def __init__(self, av): 4409 4412 self._av = av 4410 4413 4411 4414 def getVars( self ): 4412 4415 vars = WTemplated.getVars( self ) … … 4417 4420 4418 4421 class WAbstractModIntCommentEdit(WTemplated): 4419 4422 4420 4423 def __init__(self,comment): 4421 4424 self._comment=comment … … 4428 4431 4429 4432 class WAbstractModNewIntComment(WTemplated): 4430 4433 4431 4434 def __init__(self,aw,abstract): 4432 4435 self._aw=aw … … 4452 4455 comment = _("No Session Comment Entered") 4453 4456 self._session.setComments("") 4454 4457 4455 4458 modifButton="" 4456 4459 if self._conf.canModify(self._aw): 4457 4460 4458 4461 modifButton = _("""<form action=%s method="POST"> 4459 4462 <td align="center"> … … 4472 4475 </td> 4473 4476 </tr> 4474 <tr> 4477 <tr> 4475 4478 %s 4476 4479 </tr> … … 4485 4488 4486 4489 class WSessionModifCommEdit(WTemplated): 4487 4490 4488 4491 def __init__(self,comment): 4489 4492 self._comment=comment … … 4493 4496 vars["comment"]=self.htmlText(self._comment) 4494 4497 return vars 4495 4498 4496 4499 class WAbstractModIntComments(WTemplated): 4497 4500 4498 4501 def __init__(self,aw,abstract): 4499 4502 self._aw=aw … … 4552 4555 4553 4556 class WAbstractModMarkAsDup(WTemplated): 4554 4557 4555 4558 def __init__(self,abstract): 4556 4559 self._abstract=abstract … … 4584 4587 4585 4588 class WAbstractModUnMarkAsDup(WTemplated): 4586 4589 4587 4590 def __init__(self,abstract): 4588 4591 self._abstract=abstract … … 4597 4600 4598 4601 class WConfModAbstractEditData(WTemplated): 4599 4602 4600 4603 def __init__(self,conference,abstractData): 4601 4604 self._ad=abstractData … … 4611 4614 # res.append("""<option value=%s%s>%s</option>"""%(quoteattr(t),sel,self.htmlText(t))) 4612 4615 # return "".join(res) 4613 4616 4614 4617 def _getContribTypeItemsHTML(self): 4615 4618 res=[ _("""<option value="">--_("not specified")--</option>""")] … … 4647 4650 <input type="hidden" name="auth_prim_id" value=%s> 4648 4651 </td> 4649 <td style="border-top:1px solid #777777;" width="100%%"> 4652 <td style="border-top:1px solid #777777;" width="100%%"> 4650 4653 <table width="95%%" cellpadding="0" cellspacing="0"> 4651 4654 <tr> … … 4693 4696 res.append(tmp) 4694 4697 return "".join(res) 4695 4698 4696 4699 def _getCoAuthorsHTML(self): 4697 4700 res=[] … … 4720 4723 <input type="hidden" name="auth_co_id" value=%s> 4721 4724 </td> 4722 <td style="border-top:1px solid #777777;"> 4725 <td style="border-top:1px solid #777777;"> 4723 4726 <table color="gray"> 4724 4727 <tr> … … 4816 4819 4817 4820 class WScheduleAddContributions(WTemplated): 4818 4821 4819 4822 def __init__(self,selectList,targetDay=None): 4820 4823 self._contribList=selectList … … 4848 4851 spksCaption)) 4849 4852 return "".join(res) 4850 4853 4851 4854 4852 4855 def getVars(self): … … 4857 4860 vars["targetDay"]="""<input type="hidden" name="targetDay" value=%s>"""%(quoteattr(str(self._targetDay.strftime("%Y-%m-%d")))) 4858 4861 return vars 4859 4862 4860 4863 4861 4864 class WSchEditContrib(WTemplated): 4862 4865 4863 4866 def __init__(self,contrib): 4864 4867 self._contrib=contrib … … 4917 4920 4918 4921 class WConfModParticipEdit(WTemplated): 4919 4922 4920 4923 def __init__(self,title="",part=None): 4921 4924 self._part=part … … 4950 4953 4951 4954 class WSessionModEditDataCode(WTemplated): 4952 4955 4953 4956 def __init__(self): 4954 4957 pass 4955 4956 def getVars( self ): 4957 vars=WTemplated.getVars(self) 4958 4959 def getVars( self ): 4960 vars=WTemplated.getVars(self) 4958 4961 vars["code"]=quoteattr(str(vars.get("code",""))) 4959 4962 return vars 4960 4963 4961 4964 class WSessionModEditDataType(WTemplated): 4962 4965 4963 4966 def __init__(self): 4964 4967 pass 4965 4966 def getVars( self ): 4967 vars=WTemplated.getVars(self) 4968 4969 def getVars( self ): 4970 vars=WTemplated.getVars(self) 4968 4971 l=[] 4969 4972 currentTTType=vars.get("tt_type",conference.SlotSchTypeFactory.getDefaultId()) … … 4978 4981 4979 4982 class WSessionModEditDataColors(WTemplated): 4980 4983 4981 4984 def __init__(self): 4982 4985 pass 4983 4984 def getVars( self ): 4985 vars=WTemplated.getVars(self) 4986 return vars 4987 4986 4987 def getVars( self ): 4988 vars=WTemplated.getVars(self) 4989 return vars 4990 4988 4991 class WSessionModEditData(WTemplated): 4989 4992 4990 4993 def __init__(self,targetConf,aw,pageTitle="",targetDay=None): 4991 4994 self._conf=targetConf … … 5011 5014 else: 5012 5015 return "" 5013 5016 5014 5017 def getVars( self ): 5015 5018 vars=WTemplated.getVars(self) … … 5050 5053 vars["defaultInheritPlace"]="checked" 5051 5054 vars["defaultDefinePlace"]="" 5052 5055 5053 5056 if vars.get("convenerDefined",None) is None : 5054 5057 sessionId = vars["sessionId"] 5055 5058 session = self._conf.getSessionById(sessionId) 5056 html = [] 5059 html = [] 5057 5060 for convener in session.getConvenerList() : 5058 5061 text = """ … … 5061 5064 <td> %s</td> 5062 5065 </tr>"""%("convener",convener.getId(),convener.getFullName()) 5063 html.append(text) 5066 html.append(text) 5064 5067 vars["definedConveners"] = """ 5065 """.join(html) 5068 """.join(html) 5066 5069 if vars.get("locationAction","")=="define": 5067 5070 vars["defaultInheritPlace"]="" … … 5089 5092 roomName = "" 5090 5093 5091 5094 5092 5095 vars["confRoom"]="" 5093 5096 rx=[] … … 5131 5134 vars["code"]="" 5132 5135 return vars 5133 5136 5134 5137 #-------------------------------------------------------------------------------------- 5135 5138 5136 5139 class WConfModMoveContribsToSessionConfirmation(WTemplated): 5137 5140 5138 5141 def __init__(self,conf,contribIdList=[],targetSession=None): 5139 5142 self._conf=conf … … 5196 5199 5197 5200 class WConfTBDrawer: 5198 5201 5199 5202 def __init__(self,tb): 5200 5203 self._tb=tb … … 5221 5224 """%("".join(res)) 5222 5225 return "" 5223 5226 5224 5227 class WErrorMessage : 5225 5228 5226 5229 def getHTML( self, vars ): 5227 5230 5228 5231 if vars.get("errorMsg", None) is None : 5229 5232 return "" … … 5232 5235 for i in range(0,len(vars["errorMsg"])) : 5233 5236 vars["errorMsg"][i] = """<span style="color: red;">"""+vars["errorMsg"][i]+"""</span>""" 5234 5237 5235 5238 errorMsg = """ 5236 5239 """.join(vars["errorMsg"]) 5237 5238 html = """ 5240 5241 html = """ 5239 5242 <div class="errorMsgBox"> 5240 5243 %s 5241 5244 </div> 5242 5245 """%errorMsg 5243 5246 5244 5247 return html 5245 5248 5246 5249 class WInfoMessage : 5247 5250 5248 5251 def getHTML( self, vars ): 5249 5252 if vars.get("infoMsg", None) is None : 5250 return "" 5253 return "" 5251 5254 if type(vars["infoMsg"]) != list: 5252 5255 vars["infoMsg"]=[vars["infoMsg"]] 5253 5256 for i in range(0,len(vars["infoMsg"])) : 5254 5257 vars["infoMsg"][i] = """<span style="color: green;">"""+vars["infoMsg"][i]+"""</span>""" 5255 5258 5256 5259 infoMsg = """ 5257 5260 """.join(vars["infoMsg"]) 5258 5259 html = """ 5261 5262 html = """ 5260 5263 <div class="errorMsgBox"> 5261 5264 %s 5262 5265 </div> 5263 5266 """%infoMsg 5264 5267 5265 5268 return html 5266 5269 5267 5270 class WConfTickerTapeDrawer(WTemplated): 5268 5271 5269 5272 def __init__(self,conf, tz=None): 5270 5273 self._conf=conf … … 5278 5281 5279 5282 html = WTemplated.getHTML( self, params ) 5280 5283 5281 5284 if html == "": 5282 5285 return None 5283 5286 5284 5287 return html 5285 5288 5286 5289 def getSimpleText( self ): 5287 5290 if not self._tickerTape.isSimpleTextEnabled() or \ … … 5293 5296 def getVars(self): 5294 5297 vars = WTemplated.getVars( self ) 5295 5298 5296 5299 vars["nowHappeningArray"] = None 5297 5300 if self._tickerTape.isNowHappeningEnabled(): … … 5299 5302 5300 5303 return vars 5301 5304 5302 5305 def _getNowHappening( self ): 5303 5306 # This will contain a string formated for use in the template … … 5388 5391 vars["linkValue"] = "" 5389 5392 return vars 5390 5393 5391 5394 class WSubmitMaterialFile(WTemplated): 5392 5395 … … 5427 5430 vars["fileNewName"] = "FileNewName%s" % self._filenb 5428 5431 return vars 5429 5432 5430 5433 class WMaterialListFile(WTemplated): 5431 5434 … … 5466 5469 vars["fileAccessURL"]=quoteattr(str(urlHandlers.UHFileAccess.getURL(self._target))) 5467 5470 return vars 5468 5471 5469 5472 class WMaterialListItem(WTemplated): 5470 5473 … … 5474 5477 5475 5478 def getVars(self): 5476 vars=WTemplated.getVars(self) 5477 deleteURL = None 5479 vars=WTemplated.getVars(self) 5480 deleteURL = None 5478 5481 mf = None 5479 5482 from MaKaC.webinterface.materialFactories import ConfMFRegistry,SessionMFRegistry,ContribMFRegistry … … 5506 5509 vars["fileList"]="" 5507 5510 for resource in self._target.getResourceList(): 5508 vars["fileList"] += WMaterialListFile(resource).getHTML(vars) 5511 vars["fileList"] += WMaterialListFile(resource).getHTML(vars) 5509 5512 if mf is None: 5510 5513 vars["materialIcon"]=quoteattr(str(Config.getInstance().getSystemIconURL("material"))) … … 5515 5518 5516 5519 class WShowExistingMaterial(WTemplated): 5517 5520 5518 5521 def __init__(self,target): 5519 5522 self._target=target … … 5522 5525 def getVars(self): 5523 5526 vars=WTemplated.getVars(self) 5524 5527 5525 5528 vars["materialModifHandler"] = vars.get("materialModifHandler", None) 5526 5529 vars["materialProtectHandler"] = vars.get("materialProtectHandler", None) … … 5533 5536 5534 5537 class WAddNewMaterial(WTemplated): 5535 5538 5536 5539 def __init__(self,target,availMF): 5537 5540 self._target=target … … 5612 5615 5613 5616 class WSubmitMaterial(WTemplated): 5614 5617 5615 5618 def __init__(self,target,availMF): 5616 5619 self._target=target … … 5713 5716 vars = WTemplated.getVars(self) 5714 5717 return vars 5715 5716 5718 5719 5717 5720 class WSchRelocate(WTemplated): 5718 5721 5719 5722 def __init__(self, entry): 5720 5723 self._entry=entry … … 5752 5755 html.append("</table></td></tr>") 5753 5756 return "".join(html) 5754 5757 5755 5758 5756 5759 def getVars(self): … … 5770 5773 self._target=target 5771 5774 self._type=type 5772 5775 5773 5776 def _getCurrentItems(self): 5774 5777 html=[] 5775 5778 rns = self._target.getReportNumberHolder().listReportNumbers() 5776 5779 id = 0 5777 5780 5778 5781 reportCodes = [] 5779 5782 5780 5783 for rn in rns: 5781 5784 key = rn[0] … … 5798 5801 """%(system, rnsystems[system]["name"] ) ) 5799 5802 return "".join(html) 5800 5803 5801 5804 def getVars(self): 5802 5805 vars = WTemplated.getVars(self) … … 5837 5840 return vars 5838 5841 5839 5842 5840 5843 class WHTMLEditorWrapper(WTemplated): 5841 5844 … … 5901 5904 5902 5905 class WRoomBookingWelcome( WTemplated ): 5903 5906 5904 5907 def __init__(self): 5905 5908 self.__adminList = AdminList.getInstance() 5906 5909 5907 5910 def getVars( self ): 5908 5911 vars = WTemplated.getVars( self ) … … 5910 5913 5911 5914 class WRoomBookingRoomSelectList( WTemplated ): 5912 5915 5913 5916 def __init__( self, rh ): 5914 5917 self._rh = rh 5915 5916 def getVars( self ): 5917 vars = WTemplated.getVars( self ) 5918 5918 5919 def getVars( self ): 5920 vars = WTemplated.getVars( self ) 5921 5919 5922 vars['roomList'] = self._rh._roomList 5920 5923 vars['locationRoom'] = self._rh._locationRoom 5921 5922 return vars 5923 5924 5925 return vars 5926 5924 5927 class WRoomBookingRoomSelectList4SubEvents( WTemplated ): 5925 5928 5926 5929 def __init__( self, rh ): 5927 5930 self._rh = rh 5928 5929 def getVars( self ): 5930 vars = WTemplated.getVars( self ) 5931 5931 5932 def getVars( self ): 5933 vars = WTemplated.getVars( self ) 5934 5932 5935 vars['roomList'] = self._rh._roomList 5933 5936 vars['locationRoom'] = self._rh._locationRoom 5934 5937 5935 5938 return vars 5936 5939 … … 5943 5946 5944 5947 class WRoomBookingChooseEvent( WTemplated ): 5945 5948 5946 5949 def __init__( self, rh ): 5947 5950 self._rh = rh … … 5952 5955 vars["conference"] = self._rh._conf 5953 5956 vars["contributions"] = list( [ c for c in self._rh._conf.getContributionList() if c.getStartDate() ] ) 5954 5957 5955 5958 return vars 5956 5959 … … 5958 5961 5959 5962 class WRoomBookingSearch4Rooms( WTemplated ): 5960 5963 5961 5964 def __init__( self, rh, standalone = False ): 5962 5965 self._standalone = standalone … … 5975 5978 vars["forNewBooking"] = self._rh._forNewBooking 5976 5979 vars["eventRoomName"] = self._rh._eventRoomName 5977 5980 5978 5981 vars["preview"] = False 5979 5982 … … 5994 5997 vars["detailsUH"] = urlHandlers.UHConfModifRoomBookingRoomDetails 5995 5998 vars["bookingFormUH"] = urlHandlers.UHConfModifRoomBookingBookingForm 5996 5999 5997 6000 vars['youCannot'] = "javascript:alert( 'You cannot book this room' );" 5998 6001 5999 6002 return vars 6000 6003 6001 6004 class WRoomBookingSearch4Bookings( WTemplated ): 6002 6005 6003 6006 def __init__( self, rh ): 6004 6007 self._rh = rh … … 6014 6017 6015 6018 vars["roomBookingBookingListURL"] = urlHandlers.UHRoomBookingBookingList.getURL( None ) 6016 6019 6017 6020 return vars 6018 6021 … … 6020 6023 6021 6024 class WRoomBookingRoomList( WTemplated ): 6022 6025 6023 6026 def __init__( self, rh, standalone = False ): 6024 6027 self._rh = rh 6025 6028 self._standalone = standalone 6026 6029 self._title = None 6027 try: self._title = self._rh._title; 6030 try: self._title = self._rh._title; 6028 6031 except: pass 6029 6032 … … 6043 6046 vars["detailsUH"] = urlHandlers.UHConfModifRoomBookingRoomDetails 6044 6047 vars["bookingFormUH"] = urlHandlers.UHConfModifRoomBookingBookingForm 6045 6048 6046 6049 return vars 6047 6050 6048 6051 class WRoomBookingList( WTemplated ): 6049 6052 6050 6053 def __init__( self, rh, standalone = False ): 6051 6054 self._standalone = standalone … … 6053 6056 if not standalone: 6054 6057 self._conf = rh._conf 6055 6058 6056 6059 def getVars( self ): 6057 6060 vars=WTemplated.getVars( self ) … … 6061 6064 dm = datetime.now() - timedelta( 1 ) 6062 6065 vars["yesterday"] = dm #datetime( dm.year, dm.month, dm.day, 0, 0, 1 ) 6063 6066 6064 6067 if self._standalone: 6065 6068 vars["bookingDetailsUH"] = urlHandlers.UHRoomBookingBookingDetails … … 6071 6074 6072 6075 class WRoomBookingBookingList( WTemplated ): # Standalone version 6073 6076 6074 6077 def __init__( self, rh ): 6075 6078 self._rh = rh 6076 6079 self._title = None 6077 try: self._title = self._rh._title; 6080 try: self._title = self._rh._title; 6078 6081 except: pass 6079 6082 6080 6083 def _isOn(self, boolVal): 6081 6084 if boolVal: … … 6083 6086 else: 6084 6087 return "" 6085 6086 def getVars( self ): 6087 vars = WTemplated.getVars( self ) 6088 rh = self._rh 6088 6089 def getVars( self ): 6090 vars = WTemplated.getVars( self ) 6091 rh = self._rh 6089 6092 6090 6093 vars["reservations"] = rh._resvs 6091 6094 6092 6095 #vars["smallPhotoUH"] = urlHandlers.UHSendRoomPhoto 6093 6096 vars["bookingDetailsUH"] = urlHandlers.UHRoomBookingBookingDetails … … 6095 6098 vars["title"] = self._title 6096 6099 vars["showRejectAllButton"] = rh._showRejectAllButton 6097 6100 6098 6101 vars["prebookingsRejected"] = rh._prebookingsRejected 6099 6102 vars["subtitle"] = rh._subtitle … … 6105 6108 6106 6109 ed = None 6107 sd = rh._resvEx.startDT.date() 6110 sd = rh._resvEx.startDT.date() 6108 6111 if rh._resvEx.endDT: 6109 ed = rh._resvEx.endDT.date() 6110 6112 ed = rh._resvEx.endDT.date() 6113 6111 6114 # autoCriteria - dates are calculated based on the next reservation 6112 6115 if rh._autoCriteria: … … 6115 6118 tmp = tmp.getNextRepeating( afterDT = yesterday ) 6116 6119 if tmp and tmp.startDT.date() > sd: 6117 sd = tmp.startDT 6118 if not ed: 6120 sd = tmp.startDT 6121 if not ed: 6119 6122 # one month of time span 6120 6123 ed = sd + timedelta( 30 ) … … 6125 6128 6126 6129 from MaKaC.rb_tools import formatDate 6127 6130 6128 6131 if calendarStartDT.date() == calendarEndDT.date(): 6129 6132 vars["periodName"] = "day" … … 6133 6136 vars["verbosePeriod"] = "%s -> %s" % ( formatDate(calendarStartDT), formatDate(calendarEndDT) ) 6134 6137 vars["startD"] = formatDate(calendarStartDT) 6135 vars["endD"] = formatDate(calendarEndDT) 6136 6138 vars["endD"] = formatDate(calendarEndDT) 6139 6137 6140 # Data for previous/next URLs (it's about periods, not paging) 6138 6141 newParams4Previous = rh._reqParams.copy() … … 6145 6148 del newParams4Next['day'] 6146 6149 6147 6150 6148 6151 startD = calendarStartDT.date() 6149 6152 endD = calendarEndDT.date() 6150 6153 6151 6154 if endD != startD: 6152 6155 period = endD - startD 6153 6156 6154 6157 prevStartD = startD - period 6155 6158 prevEndD = startD - timedelta(1) 6156 6159 6157 6160 nextStartD = endD + timedelta(1) 6158 6161 nextEndD = endD + period 6159 6162 else: 6160 6163 prevStartD = prevEndD = startD - timedelta(1) 6161 nextStartD = nextEndD = endD + timedelta(1) 6162 6164 nextStartD = nextEndD = endD + timedelta(1) 6165 6163 6166 newParams4Previous['sDay'] = prevStartD.day 6164 6167 newParams4Previous['sMonth'] = prevStartD.month … … 6167 6170 newParams4Previous['eMonth'] = prevEndD.month 6168 6171 newParams4Previous['eYear'] = prevEndD.year 6169 6172 6170 6173 newParams4Next['sDay'] = nextStartD.day 6171 6174 newParams4Next['sMonth'] = nextStartD.month … … 6174 6177 newParams4Next['eMonth'] = nextEndD.month 6175 6178 newParams4Next['eYear'] = nextEndD.year 6176 6177 vars["withPrevNext"] = True 6179 6180 vars["withPrevNext"] = True 6178 6181 vars["prevURL"] = urlHandlers.UHRoomBookingBookingList.getURL( newParams = newParams4Previous ) 6179 6182 vars["nextURL"] = urlHandlers.UHRoomBookingBookingList.getURL( newParams = newParams4Next ) … … 6186 6189 not self._rh._search 6187 6190 showEmptyRooms = showEmptyDays 6188 6189 6191 6192 6190 6193 # Calendar related stuff ========== 6191 6194 6192 6195 bars = [] 6193 6196 collisionsOfResvs = [] 6194 6197 6195 6198 # there's at least one reservation 6196 6199 if len( rh._resvs ) > 0 and not overload: 6197 6198 6199 # Prepare the list of Collisions 6200 6201 6202 # Prepare the list of Collisions 6200 6203 # (collision is just a helper object, it's not the best notion here) 6201 6204 6202 6205 for r in rh._resvs: 6203 6206 for p in r.splitToPeriods(endDT=calendarEndDT): 6204 6207 if p.startDT >= calendarStartDT and p.endDT <= calendarEndDT: 6205 6208 collisionsOfResvs.append( Collision( ( p.startDT, p.endDT ), r ) ) 6206 6209 6207 6210 if len( collisionsOfResvs ) > 500: 6208 6211 overload = True 6209 6212 else: 6210 6211 # Translate collisions to Bars 6213 6214 # Translate collisions to Bars 6212 6215 for c in collisionsOfResvs: 6213 6216 if c.withReservation.isConfirmed: … … 6215 6218 else: 6216 6219 bars.append( Bar( c, Bar.PREBOOKED ) ) 6217 6220 6218 6221 bars = barsList2Dictionary( bars ) 6219 6222 bars = addOverlappingPrebookings( bars ) 6220 6223 bars = sortBarsByImportance( bars, calendarStartDT, calendarEndDT ) 6221 6224 6222 6225 rooms = [] 6223 6226 for r in rh._resvs: 6224 6227 rooms.append(r.room) 6225 6228 6226 6229 #rooms = {} 6227 6230 #for r in rh._resvs: 6228 6231 # rooms[r.room] = None 6229 6232 #rooms = rooms.keys() 6230 6233 6231 6234 #CrossLocationQueries.getRooms( location = self.location ) 6232 6235 if not self._rh._onlyMy: 6233 6236 rooms = self._rh._rooms 6234 6237 6235 6238 bars = introduceRooms( rooms, bars, calendarStartDT, calendarEndDT, showEmptyDays = showEmptyDays, showEmptyRooms = showEmptyRooms ) 6236 6239 6237 6240 vars["Bar"] = Bar 6238 6239 self.__sortUsingCriterion(rh._order, collisionsOfResvs) 6240 6241 6242 self.__sortUsingCriterion(rh._order, collisionsOfResvs) 6243 6241 6244 # we want to display every room, with or without reservation 6242 6245 elif not overload: 6243 # initialize collision bars 6244 bars = {} 6246 # initialize collision bars 6247 bars = {} 6245 6248 bars = sortBarsByImportance( bars, calendarStartDT, calendarEndDT ) 6246 6249 … … 6250 6253 else: 6251 6254 rooms = [] 6252 6253 bars = introduceRooms( rooms, bars, calendarStartDT, calendarEndDT, showEmptyDays = showEmptyDays, showEmptyRooms = showEmptyRooms ) 6254 6255 6255 6256 bars = introduceRooms( rooms, bars, calendarStartDT, calendarEndDT, showEmptyDays = showEmptyDays, showEmptyRooms = showEmptyRooms ) 6257 6258 6256 6259 vars["unrolledReservations"] = collisionsOfResvs 6257 6260 vars["bars"] = bars … … 6276 6279 6277 6280 return vars 6278 6279 6280 def __sortUsingCriterion(self, order, uresvs): 6281 6281 6282 6283 def __sortUsingCriterion(self, order, uresvs): 6284 6282 6285 if order == "" or order =="room": 6283 # standard sorting order (by room, and then date) 6286 # standard sorting order (by room, and then date) 6284 6287 uresvs.sort(lambda r1,r2: cmp(r1.withReservation.room.name,r2.withReservation.room.name)) 6285 6288 else: 6286 if order == 'date': 6287 uresvs.sort(lambda r1, r2: cmp(r1.startDT, r2.startDT)) 6289 if order == 'date': 6290 uresvs.sort(lambda r1, r2: cmp(r1.startDT, r2.startDT)) 6288 6291 elif order == 'reason': 6289 6292 uresvs.sort(lambda r1, r2: cmp(r1.withReservation.reason.lower(), r2.withReservation.reason.lower())) … … 6297 6300 6298 6301 def barsList2Dictionary( bars ): 6299 """ 6302 """ 6300 6303 Converts: 6301 6304 list of bars => dictionary of bars, key = datetime, value = list of bars … … 6308 6311 else: 6309 6312 h[d] = [bar] 6310 return h 6313 return h 6311 6314 6312 6315 def addOverlappingPrebookings( bars ): … … 6315 6318 Returns new bars dictionary. 6316 6319 """ 6317 6320 6318 6321 # For each day 6319 6322 for dt in bars.keys(): 6320 6323 dayBars = bars[dt] 6321 6324 6322 6325 # For each (prebooked) bar i 6323 6326 for i in xrange( 0, len( dayBars ) ): … … 6329 6332 collCand = dayBars[j] 6330 6333 if collCand.type == Bar.PREBOOKED: 6331 6334 6332 6335 # If there is an overlap, add PRECONCURRENT bar 6333 6336 over = overlap( bar.startDT, bar.endDT, collCand.startDT, collCand.endDT ) … … 6337 6340 6338 6341 bars[dt] = dayBars # With added concurrent prebooking bars 6339 6342 6340 6343 return bars 6341 6344 6342 6345 def sortBarsByImportance( bars, calendarStartDT, calendarEndDT ): 6343 """ 6344 Moves conflict bars to the end of the list, 6346 """ 6347 Moves conflict bars to the end of the list, 6345 6348 so they will be drawn last and therefore be visible. 6346 6349 6347 6350 Returns sorted bars. 6348 6351 """ … … 6351 6354 dayBars.sort() 6352 6355 bars[dt] = dayBars 6353 6356 6354 6357 for day in iterdays( calendarStartDT, calendarEndDT ): 6355 6358 if not bars.has_key( day.date() ): 6356 6359 bars[day.date()] = [] 6357 6360 6358 6361 return bars 6359 6362 … … 6368 6371 6369 6372 def introduceRooms( rooms, dayBarsDic, calendarStartDT, calendarEndDT, showEmptyDays=True, showEmptyRooms=True ): 6370 # Input: 6373 # Input: 6371 6374 # dayBarsDic is a dictionary date => [bar1, bar2, bar3, ...] 6372 6375 # … … 6377 6380 cleanRoomBarsList = getRoomBarsList( rooms ) 6378 6381 newDayBarsDic = {} 6379 6382 6380 6383 s = "" 6381 6384 for day in iterdays( calendarStartDT, calendarEndDT ): … … 6386 6389 if not roomBarsDic.has_key( room ): 6387 6390 roomBarsDic[room] = [] 6388 # Bars order should be preserved 6391 # Bars order should be preserved 6389 6392 roomBarsDic[room].append( bar ) 6390 6391 if showEmptyRooms: 6393 6394 if showEmptyRooms: 6392 6395 dayRoomBarsList = getRoomBarsList( rooms ) #copy.copy( cleanRoomBarsList ) 6393 6396 6394 6397 for roomBar in dayRoomBarsList: 6395 6398 roomBar.bars = roomBarsDic.get( roomBar.room, [] ) … … 6398 6401 for room in roomBarsDic.keys(): 6399 6402 dayRoomBarsList.append(RoomBars(room,roomBarsDic[room])) 6400 6403 6401 6404 if showEmptyDays or len(dayBars) > 0: 6402 6405 newDayBarsDic[day.date()] = dayRoomBarsList 6403 6406 6404 6407 return newDayBarsDic 6405 6408 6406 6409 6407 6410 class WRoomBookingRoomStats( WTemplated ): … … 6417 6420 vars["period"] = self._rh._period 6418 6421 vars["kpiAverageOccupation"] = str( int( round( self._rh._kpiAverageOccupation * 100 ) ) ) + "%" 6419 # Bookings 6422 # Bookings 6420 6423 vars["kbiTotalBookings"] = self._rh._totalBookings 6421 6424 # Next 9 KPIs … … 6423 6426 vars["statsURL"] = urlHandlers.UHRoomBookingRoomStats.getURL() 6424 6427 return vars 6425 6428 6426 6429 6427 6430 class WRoomBookingRoomDetails( WTemplated ): 6428 6431 6429 6432 def __init__( self, rh, standalone = False ): 6430 6433 self._rh = rh … … 6445 6448 vars["actionSucceeded"] = self._rh._afterActionSucceeded 6446 6449 vars["deletionFailed"] = self._rh._afterDeletionFailed 6447 6450 6448 6451 vars["roomStatsUH"] = urlHandlers.UHRoomBookingRoomStats 6449 6452 … … 6477 6480 resvEx.repeatability = RepeatabilityEnum.daily 6478 6481 resvEx.room = self._rh._room 6479 resvEx.isConfirmed = None # to include not also confirmed 6480 6482 resvEx.isConfirmed = None # to include not also confirmed 6483 6481 6484 # Bars: Existing reservations 6482 6485 collisionsOfResvs = resvEx.getCollisions() … … 6506 6509 vars["Bar"] = Bar 6507 6510 vars["withConflicts"] = False 6508 6511 6509 6512 return vars 6510 6513 6511 6514 class WRoomBookingDetails( WTemplated ): 6512 6515 6513 6516 def __init__( self, rh, standalone = False ): 6514 6517 self._rh = rh … … 6527 6530 vars["title"] = self._rh._title 6528 6531 vars["description"] = self._rh._description 6529 6532 6530 6533 if self._standalone: 6531 6534 vars["roomDetailsUH"] = urlHandlers.UHRoomBookingRoomDetails … … 6542 6545 6543 6546 class WRoomBookingBookingForm( WTemplated ): 6544 6547 6545 6548 def __init__( self, rh, standalone = False ): 6546 6549 self._rh = rh … … 6576 6579 vars["skipConflicting"] = self._rh._skipConflicting 6577 6580 6578 if self._rh._formMode == FormMode.MODIF: 6579 vars["allowPast"] = "true" 6580 else: 6581 vars["allowPast"] = "false" 6582 vars["formMode"] = self._rh._formMode 6581 if self._rh._formMode == FormMode.MODIF: 6582 vars["allowPast"] = "true" 6583 else: 6584 vars["allowPast"] = "false" 6585 vars["formMode"] = self._rh._formMode 6583 6586 vars["FormMode"] = FormMode 6584 6587 6585 6588 # [Book] or [PRE-Book] ? 6586 6589 bookingMessage = "Book" … … 6595 6598 else: 6596 6599 bText = "Save" 6597 6600 6598 6601 vars["roomBookingRoomCalendar"] = WRoomBookingRoomCalendar( self._rh, self._standalone, buttonText=bText).getHTML( {} ) 6599 6602 6600 6603 return vars 6601 6604 6602 6605 class WRoomBookingConfirmBooking( WRoomBookingBookingForm ): 6603 6604 def getVars( self ): 6605 vars = WTemplated.getVars( self ) 6606 6606 6607 def getVars( self ): 6608 vars = WTemplated.getVars( self ) 6609 6607 6610 vars["candResv"] = self._candResv 6608 6611 6609 6612 vars["standalone"] = self._standalone 6610 6613 vars["formMode"] = self._rh._formMode 6611 6614 vars["FormMode"] = FormMode 6612 6615 vars["collisions"] = self._rh._collisions 6613 6616 6614 6617 bookingMessage = "Book" 6615 6618 room = self._candResv.room … … 6618 6621 bookingMessage = "PRE-Book" 6619 6622 vars["bookingMessage"] = bookingMessage 6620 6623 6621 6624 if self._standalone: 6622 6625 vars["conf"] = None … … 6626 6629 vars["conf"] = self._rh._conf 6627 6630 vars["saveBookingUH"] = urlHandlers.UHConfModifRoomBookingSaveBooking 6628 vars["roomDetailsUH"] = urlHandlers.UHConfModifRoomBookingRoomDetails 6629 return vars 6630 6631 vars["roomDetailsUH"] = urlHandlers.UHConfModifRoomBookingRoomDetails 6632 return vars 6633 6631 6634 class WRoomBookingRoomForm( WTemplated ): 6632 6635 6633 6636 def __init__( self, rh ): 6634 6637 self._rh = rh … … 6636 6639 def getVars( self ): 6637 6640 vars = WTemplated.getVars( self ) 6638 6641 6639 6642 candRoom = self._rh._candRoom 6640 6643 goodFactory = Location.parse( candRoom.locationName ).factory 6641 6644 6642 6645 vars["Location"] = Location 6643 6646 vars["room"] = candRoom … … 6646 6649 vars["config"] = Config.getInstance() 6647 6650 vars["possibleEquipment"] = goodFactory.getEquipmentManager().getPossibleEquipment( location = candRoom.locationName ) 6648 6651 6649 6652 vars["showErrors"] = self._rh._showErrors 6650 6653 vars["errors"] = self._rh._errors … … 6657 6660 else: 6658 6661 vars["responsibleName"] = "" 6659 6662 6660 6663 return vars 6661 6664 … … 6668 6671 self._standalone = standalone 6669 6672 self._buttonText = buttonText 6670 6673 6671 6674 def getVars( self ): 6672 6675 vars = WTemplated.getVars( self ) … … 6683 6686 now = datetime.now() 6684 6687 if candResv != None: #.startDT != None and candResv.endDT != None: 6685 calendarStartDT = datetime( candResv.startDT.year, candResv.startDT.month, candResv.startDT.day, 0, 0, 1 ) # Potential performance problem 6688 calendarStartDT = datetime( candResv.startDT.year, candResv.startDT.month, candResv.startDT.day, 0, 0, 1 ) # Potential performance problem 6686 6689 calendarEndDT = datetime( candResv.endDT.year, candResv.endDT.month, candResv.endDT.day, 23, 59 ) # with very long reservation periods 6687 6690 else: … … 6696 6699 resvEx.room = room 6697 6700 resvEx.isConfirmed = None # To include both confirmed and not confirmed 6698 6701 6699 6702 # Bars: Existing reservations 6700 6703 collisionsOfResvs = resvEx.getCollisions() … … 6712 6715 6713 6716 # Bars: Conflicts all vs candidate 6714 candResvIsConfirmed = candResv.isConfirmed; 6717 candResvIsConfirmed = candResv.isConfirmed; 6715 6718 candResv.isConfirmed = None 6716 6719 allCollisions = candResv.getCollisions() … … 6726 6729 else: 6727 6730 bars.append( Bar( c, Bar.PRECONFLICT ) ) 6728 6731 6729 6732 if not candResv.isRejected and not candResv.isCancelled: 6730 6733 vars["thereAreConflicts"] = len( collisions ) > 0 … … 6732 6735 vars["thereAreConflicts"] = False 6733 6736 vars["conflictsNumber"] = len( collisions ) 6734 6737 6735 6738 bars = barsList2Dictionary( bars ) 6736 6739 bars = addOverlappingPrebookings( bars ) … … 6789 6792 vars["possibleEquipment"] = self._location.factory.getEquipmentManager().getPossibleEquipment(location = self._location.friendlyName) 6790 6793 vars["AttsManager"] = self._location.factory.getCustomAttributesManager() 6791 6794 6792 6795 # Rooms 6793 6796 rooms = self._location.factory.newRoom().getRooms(location = self._location.friendlyName) 6794 6797 rooms.sort(key = lambda r: r.getFullName()) 6795 6798 6796 6799 vars["Rooms"] = rooms 6797 6800 6798 6801 rh = self._rh 6799 6802 6800 6803 vars["withKPI"] = rh._withKPI 6801 6804 6802 6805 if rh._withKPI: 6803 6806 vars["kpiAverageOccupation"] = str( int( round( rh._kpiAverageOccupation * 100 ) ) ) + "%" 6804 6807 6805 6808 vars["kpiTotalRooms"] = rh._kpiTotalRooms 6806 6809 vars["kpiActiveRooms"] = rh._kpiActiveRooms 6807 6810 vars["kpiReservableRooms"] = rh._kpiReservableRooms 6808 6811 6809 6812 vars["kpiReservableCapacity"] = rh._kpiReservableCapacity 6810 6813 vars["kpiReservableSurface"] = rh._kpiReservableSurface 6811 6814 6812 6815 # Bookings 6813 6816 6814 6817 vars["kbiTotalBookings"] = rh._totalBookings 6815 6818 6816 6819 # Next 9 KPIs 6817 6820 vars["stats"] = rh._booking_stats 6818 6819 return vars 6820 6821 class WBaseSearchBox(WTemplated): 6822 6821 6822 return vars 6823 6824 class WBaseSearchBox(WTemplated): 6825 6823 6826 def __init__(self, template='SearchBox', targetId=0): 6824 6827 # overload the template 6825 6828 WTemplated.__init__(self,template) 6826 6829 self._targetId = targetId 6827 6830 6828 6831 def getVars(self): 6829 vars = WTemplated.getVars( self ) 6832 vars = WTemplated.getVars( self ) 6830 6833 vars["searchAction"] = urlHandlers.UHSearch.getURL(); 6831 6834 vars['targetId'] = self._targetId 6832 6835 vars['searchImg'] = imgLogo=Configuration.Config.getInstance().getSystemIconURL( "search" ) 6836 vars['categId'] = 0 6833 6837 return vars 6834 6838 6835 6839 class WMiniSearchBox(WBaseSearchBox): 6836 6840 6837 6841 def __init__(self, confId): 6838 6842 WBaseSearchBox.__init__(self, template='MiniSearchBox',targetId = confId) 6839 6843 6840 6844 def getVars(self): 6841 6845 vars = WBaseSearchBox.getVars( self ) 6842 return vars 6846 return vars 6843 6847 6844 6848 class WMicroSearchBox(WBaseSearchBox): 6845 6849 6846 6850 def __init__(self, confId): 6847 6851 WBaseSearchBox.__init__(self, template='MicroSearchBox',targetId = confId) 6848 6852 self._confId = confId 6849 6853 6850 6854 def getVars(self): 6851 vars = WBaseSearchBox.getVars( self ) 6855 vars = WBaseSearchBox.getVars( self ) 6852 6856 vars["innerBox"] = WMiniSearchBox(self._confId).getHTML().replace('"', '\\"').replace("'", "\\'").replace("\n"," ") 6853 6857 vars["closeIcon"] = quoteattr(str(Configuration.Config.getInstance().getSystemIconURL("remove"))); 6854 return vars 6858 return vars 6855 6859 6856 6860 class WCategorySearchBox(WBaseSearchBox): 6857 6861 6858 6862 def __init__(self, categId = 0, optionsClass='arrowExpandIcon'): 6859 6863 WBaseSearchBox.__init__(self, targetId = categId) 6864 self._categId = categId 6860 6865 self._moreOptionsClass = optionsClass 6861 6866 6862 6867 def getVars(self): 6863 6868 vars = WBaseSearchBox.getVars( self ) 6869 vars["categId"] = self._categId 6864 6870 vars['moreOptionsClass'] = self._moreOptionsClass 6865 6871 return vars 6866 6872 6867 6873 class WRootSearchBox(WBaseSearchBox): 6868 6874 6869 6875 def __init__(self): 6870 6876 # overload the template 6871 6877 WBaseSearchBox.__init__(self,'RootSearchBox') 6872 6878 6873 6879 def getVars(self): 6874 vars = WBaseSearchBox.getVars( self ) 6875 vars["innerBox"] = WBaseSearchBox().getHTML() 6876 return vars 6877 6880 vars = WBaseSearchBox.getVars( self ) 6881 vars["innerBox"] = WBaseSearchBox().getHTML() 6882 return vars 6883 6878 6884 class WUtils: 6879 6885 """A interface for creating easily some HTML elements...""" 6880 6886 6881 6887 def createImg(cls, imgId, imgInfo="", imgText="", **attributes): 6882 6888 """ returns an HTML image with optional text on the right. … … 6890 6896 return """<img src="%s" alt="%s" %s /> %s"""%(Config.getInstance().getSystemIconURL(imgId),imgInfo,attr,imgText) 6891 6897 createImg = classmethod(createImg) 6892 6898 6893 6899 def createImgButton(cls, url, imgId, imgInfo="", imgText="", **attributes): 6894 6900 """ returns an HTML image link with optional text on the right. … … 6905 6911 </a>"""%(url, attr, Config.getInstance().getSystemIconURL(imgId), imgInfo, imgText) 6906 6912 createImgButton = classmethod(createImgButton) 6907 6913 6908 6914 def createChangingImgButton(cls, url, imgID, imgOverId, imgInfo="", imgText="", **attributes): 6909 6915 """ returns a changing HTML image link 6910 6916 (i.e. the image changes depending on mouseOver/mouseOut) 6911 6917 with optional text on the right. 6912 6918 6913 6919 Params: 6914 6920 url -- link of target. … … 6924 6930 return """<a href="%s" %s> 6925 6931 <img src="%s" alt="%s" onmouseover="javascript:this.src='%s'" onMouseOut="javascript:this.src='%s'"/> %s 6926 </a>"""%(url, attr, iconUrl, imgInfo, iconOverUrl, iconUrl, imgText) 6932 </a>"""%(url, attr, iconUrl, imgInfo, iconOverUrl, iconUrl, imgText) 6927 6933 createChangingImgButton = classmethod(createChangingImgButton) 6928 6934 6929 6935 def createTextarea(cls, content="", **attributes): 6930 6936 """ returns an HTML textarea with optional text. … … 6940 6946 return """<textarea rows="5" cols="15" %s>%s</textarea>"""%(attr,content) 6941 6947 createTextarea = classmethod(createTextarea) 6942 6948 6943 6949 def createInput(cls, text="", **attributes): 6944 6950 """ returns an HTML input with optional text. … … 6954 6960 return """<input %s/>%s"""%(attr,text) 6955 6961 createInput = classmethod(createInput) 6956 6962 6957 6963 def createSelect(cls, emptyOption, options, selected="", **attributes): 6958 6964 """ returns an HTML select field. … … 6979 6985 return """<select %s>%s</select>"""%(attr,optionsHTML) 6980 6986 createSelect = classmethod(createSelect) 6981 6987 6982 6988 def appendNewLine(cls, htmlContent): 6983 6989 """ appends a new line <br/> to the given html element. … … 6989 6995 6990 6996 class WBeautifulHTMLList(WTemplated): 6991 6997 6992 6998 def __init__(self, listObject, classNames, level): 6993 6999 """ classNames: a dictionary such as {'UlClassName' : 'optionList'}. See the getVars for more class names. … … 6997 7003 self.__classNames = classNames 6998 7004 self.__level = level 6999 7005 7000 7006 def getVars(self): 7001 7007 vars = WTemplated.getVars( self ) … … 7006 7012 vars["Level"] = self.__level 7007 7013 return vars 7008 7014 7009 7015 class WBeautifulHTMLDict(WTemplated): 7010 7016 7011 7017 def __init__(self, dictObject, classNames, level): 7012 7018 """ classNames: a dictionary such as {'UlClassName' : 'optionList'}. See the getVars for more class names. … … 7016 7022 self.__classNames = classNames 7017 7023 self.__level = level 7018 7024 7019 7025 def getVars(self): 7020 7026 vars = WTemplated.getVars( self )
Note: See TracChangeset
for help on using the changeset viewer.
