Changeset af424d9 in indico


Ignore:
Timestamp:
01/12/12 15:34:54 (17 months ago)
Author:
Jose Benito <jose.benito.gonzalez@…>
Branches:
master, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, 0da0c1403bae8e51d8229f460181c71b9e6dda72
Children:
9201f2
Parents:
38f650
git-author:
Alexis Castilla Hernandez <alexis.castilla.hernandez@…> (07/12/11 17:06:21)
git-committer:
Jose Benito <jose.benito.gonzalez@…> (01/12/12 15:34:54)
Message:

[IMP] Manage conveners in sessions

  • Replaced search users page by popup.
  • Implemented JS class to manage the list of conveners in sessions.
  • Implemented AJAX services to add, remove, and edit conveners.
  • Added functionality to grant/revoke submissions rights to the conveners.
  • Deleted deprecated code
Location:
indico
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • indico/MaKaC/services/implementation/session.py

    r10a79e raf424d9  
    272272        if self._kindOfUser == "pending": 
    273273            if self._kindOfList == "manager": 
    274                 # remove pending email, self._submitterId is an email address 
     274                # remove pending email, self._chairId is an email address 
    275275                self._session.getAccessController().revokeModificationEmail(self._chairId) 
    276276            elif self._kindOfList == "coordinator": 
    277                 chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._chairId][0] 
    278                 self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 
     277                try: 
     278                    chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._chairId][0] 
     279                    self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 
     280                except KeyError: 
     281                    # the user is not in the list of conveners (the table is not updated). Do nothing and update the list 
     282                    pass 
    279283        elif self._kindOfUser == "principal": 
    280284            ph = PrincipalHolder() 
     
    323327        coordinatorResult = self._getSessionChairList() 
    324328        return [managerResult, coordinatorResult] 
     329 
     330 
     331class SessionConvenersBase(SessionModifBase): 
     332 
     333    def _isEmailAlreadyUsed(self, email): 
     334        for conv in self._session.getConvenerList(): 
     335            if email == conv.getEmail(): 
     336                return True 
     337        return False 
     338 
     339    def _isSessionManager(self, convener): 
     340        # pendings managers 
     341        if convener.getEmail() in self._session.getAccessController().getModificationEmail(): 
     342            return True 
     343        # managers list 
     344        for manager in self._session.getManagerList(): 
     345            if convener.getEmail() == manager.getEmail(): 
     346                return True 
     347        return False 
     348 
     349    def _isSessionCoordinator(self, convener): 
     350        # pendings coordinators 
     351        if convener.getEmail() in self._session.getConference().getPendingQueuesMgr().getPendingCoordinatorsKeys(): 
     352            return True 
     353        # coordinator list 
     354        for coord in self._session.getCoordinatorList(): 
     355            if convener.getEmail() == coord.getEmail(): 
     356                return True 
     357        return False 
     358 
     359    def _setConvenerData(self, conv): 
     360        conv.setTitle(self._userData.get("title", "")) 
     361        conv.setFirstName(self._userData.get("firstName", "")) 
     362        conv.setFamilyName(self._userData.get("familyName", "")) 
     363        conv.setAffiliation(self._userData.get("affiliation", "")) 
     364        conv.setEmail(self._userData.get("email", "")) 
     365        conv.setAddress(self._userData.get("address", "")) 
     366        conv.setPhone(self._userData.get("phone", "")) 
     367        conv.setFax(self._userData.get("fax", "")) 
     368 
     369 
     370    def _getConvenerList(self): 
     371        result = [] 
     372        for convener in self._session.getConvenerList(): 
     373            convFossil = fossilize(convener) 
     374            convFossil["isManager"] = self._isSessionManager(convener) 
     375            convFossil["isCoordinator"] = self._isSessionCoordinator(convener) 
     376            result.append(convFossil) 
     377        return result 
     378 
     379 
     380class SessionGetConvenerList(SessionConvenersBase): 
     381 
     382    def _getAnswer(self): 
     383        return self._getConvenerList() 
     384 
     385 
     386class SessionAddExistingConvener(SessionConvenersBase): 
     387 
     388    def _checkParams(self): 
     389        SessionConvenersBase._checkParams(self) 
     390        pm = ParameterManager(self._params) 
     391        self._userList = pm.extract("userList", pType=list, allowEmpty=False) 
     392        # Check if there is already a user with the same email 
     393        for user in self._userList: 
     394            if self._isEmailAlreadyUsed(user["email"]): 
     395                raise ServiceAccessError(_("The email address (%s) of a user you are trying to add is already used by another convener or the user is already added to the list. Convener(s) not added.") % user["email"]) 
     396 
     397    def _getAnswer(self): 
     398        ah = AvatarHolder() 
     399        for user in self._userList: 
     400            convener = SessionChair() 
     401            convener.setDataFromAvatar(ah.getById(user["id"])) 
     402            self._session.addConvener(convener) 
     403        return self._getConvenerList() 
     404 
     405 
     406class SessionAddNewConvener(SessionConvenersBase): 
     407 
     408    def _checkParams(self): 
     409        SessionConvenersBase._checkParams(self) 
     410        pm = ParameterManager(self._params) 
     411        self._userData = pm.extract("userData", pType=dict, allowEmpty=False) 
     412        email = self._userData.get("email", "") 
     413        # check if the email is empty and the user wants to give any rights 
     414        if (email == "" and (self._userData.get("manager", False) or self._userData.get("coordinator", False))): 
     415            raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Convener not added.")) 
     416        if (email != "" and self._isEmailAlreadyUsed(email)): 
     417            raise ServiceAccessError(_("The email address (%s) is already used by another convener or the user is already added to the list. Convener not added.") % email) 
     418 
     419    def _getAnswer(self): 
     420        conv = SessionChair() 
     421        self._setConvenerData(conv) 
     422        self._session.addConvener(conv) 
     423        if (self._userData.get("manager", False)): 
     424            # Add to pending managers list 
     425            self._session.grantModification(conv) 
     426        if (self._userData.get("coordinator", False)): 
     427            # Add to pending managers list 
     428            self._session.addCoordinator(conv) 
     429        return self._getConvenerList() 
     430 
     431 
     432class SessionConvenerActionBase(SessionConvenersBase): 
     433 
     434    def _checkParams(self): 
     435        SessionConvenersBase._checkParams(self) 
     436        pm = ParameterManager(self._params) 
     437        self._convener = self._session.getConvenerById(pm.extract("userId", pType=str, allowEmpty=False)) 
     438        if self._convener == None: 
     439            raise ServiceError("ERR-U0", _("User does not exist.")) 
     440 
     441 
     442class SessionGetConvenerData(SessionConvenerActionBase): 
     443 
     444    def _getAnswer(self): 
     445        result = fossilize(self._convener) 
     446        result["isManager"] = self._isSessionManager(self._convener) 
     447        result["isCoordinator"] = self._isSessionCoordinator(self._convener) 
     448        return result 
     449 
     450 
     451class SessionEditConvenerData(SessionConvenerActionBase): 
     452 
     453    def _checkParams(self): 
     454        SessionConvenerActionBase._checkParams(self) 
     455        pm = ParameterManager(self._params) 
     456        self._userData = pm.extract("userData", pType=dict, allowEmpty=False) 
     457        email = self._userData.get("email", "") 
     458        if (email == "" and (self._userData.get("manager", False) or self._userData.get("coordinator", False))): 
     459            raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Convener not edited.")) 
     460        if (email != "" and self._isEmailUsedByOther()): 
     461            raise ServiceAccessError(_("The email address (%s) is already used by another convener. Convener data not edited.") % email) 
     462 
     463    def _isEmailUsedByOther(self): 
     464        for conv in self._session.getConvenerList(): 
     465            if self._userData.get("email") == conv.getEmail() and self._convener.getId() != conv.getId(): 
     466                return True 
     467        return False 
     468 
     469    def _getAnswer(self): 
     470        prevEmail = self._convener.getEmail() 
     471        newEmail = self._userData.get("email", "") 
     472        isSessionCoordinator = self._isSessionCoordinator(self._convener) 
     473        isSessionManager = self._isSessionManager(self._convener) 
     474        self._setConvenerData(self._convener) 
     475        if prevEmail != newEmail: 
     476            if isSessionCoordinator: 
     477                # remove the previous email in queue 
     478                try: 
     479                    del self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[prevEmail] 
     480                    # add the new email to the list 
     481                    self._session.addCoordinator(self._convener) 
     482                except KeyError: 
     483                    self._session.addCoordinator(self._convener) 
     484            if isSessionManager: 
     485                self._session.getAccessController().revokeModificationEmail(prevEmail) 
     486                self._session.grantModification(self._convener) 
     487        if (self._userData.get("manager", False)): 
     488            # Add to pending managers list 
     489            self._session.grantModification(self._convener) 
     490        if (self._userData.get("coordinator", False)): 
     491            # Add to pending managers list 
     492            self._session.addCoordinator(self._convener) 
     493        return self._getConvenerList() 
     494 
     495 
     496class SessionRemoveConvener(SessionConvenerActionBase): 
     497 
     498    def _getAnswer(self): 
     499        self._session.removeConvener(self._convener) 
     500        return self._getConvenerList() 
     501 
     502 
     503class SessionModifyConvenerRights(SessionConvenerActionBase): 
     504 
     505    def _checkParams(self): 
     506        SessionConvenerActionBase._checkParams(self) 
     507        pm = ParameterManager(self._params) 
     508        self._kindOfRights = pm.extract("kindOfRights", pType=str, allowEmpty=False) 
     509 
     510 
     511class SessionGrantRights(SessionModifyConvenerRights): 
     512 
     513    def _getAnswer(self): 
     514        if self._convener.getEmail() != "": 
     515            if self._kindOfRights == "management": 
     516                self._session.grantModification(self._convener) 
     517            elif self._kindOfRights == "coordination": 
     518                self._session.addCoordinator(self._convener) 
     519        else: 
     520            raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Please, set an email address for this convener.")) 
     521        return self._getConvenerList() 
     522 
     523 
     524class SessionRevokeRights(SessionModifyConvenerRights): 
     525 
     526    def _getAnswer(self): 
     527        av = AvatarHolder().match({"email": self._convener.getEmail()}) 
     528        if self._kindOfRights == "management": 
     529            if not av: 
     530                self._session.getAccessController().revokeModificationEmail(self._convener.getEmail()) 
     531            else: 
     532                self._session.revokeModification(av[0]) 
     533        elif self._kindOfRights == "coordination": 
     534            if not av: 
     535                chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._convener.getEmail()][0] 
     536                self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 
     537            else: 
     538                self._session.removeCoordinator(av[0]) 
     539        return self._getConvenerList() 
     540 
    325541 
    326542 
     
    338554    "protection.addExistingCoordinator": SessionAddExistingChair, 
    339555    "protection.removeCoordinator": SessionRemoveChair, 
    340     "protection.getCoordinatorList": SessionGetChairList 
     556    "protection.getCoordinatorList": SessionGetChairList, 
     557 
     558    "conveners.addExistingConvener": SessionAddExistingConvener, 
     559    "conveners.addNewConvener": SessionAddNewConvener, 
     560    "conveners.getConvenerData": SessionGetConvenerData, 
     561    "conveners.editConvenerData": SessionEditConvenerData, 
     562    "conveners.removeConvener": SessionRemoveConvener, 
     563    "conveners.getConvenerList": SessionGetConvenerList, 
     564    "conveners.grantRights": SessionGrantRights, 
     565    "conveners.revokeRights": SessionRevokeRights 
    341566} 
  • indico/MaKaC/webinterface/meeting.py

    r6dc9af raf424d9  
    207207    getModSlotRemConfirmation = staticmethod(getModSlotRemConfirmation) 
    208208 
    209     def getModConvenerNew(self,session): 
    210         return WPMModConvenerNew(self,session) 
    211     getModConvenerNew = staticmethod(getModConvenerNew) 
    212  
    213209    def getSessionAddMaterial(self,session,mf): 
    214210        return WPMSessionAddMaterial(self,session,mf) 
     
    238234        return WPMSessionModifSchedule(rh,session) 
    239235    getSessionModifSchedule = staticmethod(getSessionModifSchedule) 
    240  
    241     def getModConvenerEdit(rh, session): 
    242         return WPMModConvenerEdit(rh, session) 
    243     getModConvenerEdit = staticmethod (getModConvenerEdit) 
    244236 
    245237#################### Participants ##################################### 
     
    821813    def _setupTabCtrl(self): 
    822814        self._tabContribs.disable() 
    823  
    824  
    825 class WPMModConvenerEdit(sessions.WPModConvenerEdit): 
    826     def _setupTabCtrl(self): 
    827         self._tabContribs.disable() 
    828  
    829  
    830 class WPMModConvenerNew(sessions.WPModConvenerNew): 
    831     def _setupTabCtrl(self): 
    832         self._tabContribs.disable() 
    833  
    834815 
    835816class WPMModSlotRemConfirmation(sessions.WPModSlotRemConfirmation): 
  • indico/MaKaC/webinterface/pages/conferences.py

    r38f650 raf424d9  
    27772777        return "".join(html) 
    27782778 
    2779 #--------------------------------------------------------------------------- 
    2780  
    2781 class WPNewSessionConvenerSelect( WPConferenceModifBase ): 
    2782  
    2783     def _setActiveTab( self ): 
    2784         self._tabContribList.setActive() 
    2785  
    2786     def _getTabContent( self, params ): 
    2787         searchAction = str(self._rh.getCurrentURL()) 
    2788         searchExt = params.get("searchExt","") 
    2789         if searchExt != "": 
    2790             searchLocal = False 
    2791         else: 
    2792             searchLocal = True 
    2793         p = wcomponents.WComplexSelection(self._conf,searchAction, forceWithoutExtAuth=searchLocal) 
    2794         return p.getHTML(params) 
    2795  
    2796 #--------------------------------------------------------------------------- 
    2797  
    2798 class WPNewSessionConvenerNew( WPConferenceModifBase ): 
    2799  
    2800     def __init__(self, rh, conf, params): 
    2801         WPConferenceModifBase.__init__(self, rh, conf) 
    2802         self._params = params 
    2803  
    2804  
    2805     def _setActiveTab( self ): 
    2806         self._tabContribList.setActive() 
    2807  
    2808     def _getTabContent( self, params ): 
    2809         p = wcomponents.WNewPerson() 
    2810         if self._params.get("formTitle",None) is None : 
    2811             self._params["formTitle"] = _("Define new convener") 
    2812         if self._params.get("titleValue",None) is None : 
    2813             self._params["titleValue"] = "" 
    2814         if self._params.get("surNameValue",None) is None : 
    2815             self._params["surNameValue"] = "" 
    2816         if self._params.get("nameValue",None) is None : 
    2817             self._params["nameValue"] = "" 
    2818         if self._params.get("emailValue",None) is None : 
    2819             self._params["emailValue"] = "" 
    2820         if self._params.get("addressValue",None) is None : 
    2821             self._params["addressValue"] = "" 
    2822         if self._params.get("affiliationValue",None) is None : 
    2823             self._params["affiliationValue"] = "" 
    2824         if self._params.get("phoneValue",None) is None : 
    2825             self._params["phoneValue"] = "" 
    2826         if self._params.get("faxValue",None) is None : 
    2827             self._params["faxValue"] = "" 
    2828  
    2829         self._params["disabledRole"] = False 
    2830         self._params["roleDescription"] = i18nformat(""" _("Coordinator")<br> _("Manager")""") 
    2831         self._params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").<br> 
    2832                                         <input type="checkbox" name="managerControl"> _("Give management rights to the convener").""") 
    2833         self._params["disabledNotice"] = True 
    2834         self._params["noticeValue"] = i18nformat("""<i><font color="black"><b>_("Note"): </b></font>_("If this person does not already have 
    2835          an Indico account, he or she will be sent an email asking to create an account. After the account creation the 
    2836          user will automatically be given coordinator/management rights.")</i>""") 
    2837  
    2838         formAction = urlHandlers.UHConfNewSessionPersonAdd.getURL(self._conf) 
    2839         formAction.addParam("orgin","new") 
    2840         formAction.addParam("typeName","convener") 
    2841         self._params["formAction"] = formAction 
    2842  
    2843         return p.getHTML(self._params) 
    28442779 
    28452780#--------------------------------------------------------------------------- 
  • indico/MaKaC/webinterface/pages/sessions.py

    r10a79e raf424d9  
    689689        self._mfr = mfRegistry 
    690690 
    691     def _getConvenersHTML(self): 
    692         res=[] 
    693         for conv in self._session.getConvenerList(): 
    694             url=urlHandlers.UHSessionModConvenerEdit.getURL(conv) 
    695             res.append(""" 
    696                 <input type="checkbox" name="selConv" value=%s> <a href=%s>%s</a> 
    697                 """%(quoteattr(str(conv.getId())),\ 
    698                     quoteattr(str(url)), \ 
    699                     self.htmlText(conv.getFullName()))) 
    700         return "<br>".join(res) 
    701  
    702691    def getVars( self ): 
    703692        vars = wcomponents.WTemplated.getVars( self ) 
     
    705694        vars["removeMaterialsURL"]=urlHandlers.UHSessionRemoveMaterials.getURL() 
    706695 
    707         newConvenerURL = urlHandlers.UHSessionDataModificationNewConvenerCreate.getURL(self._session) 
    708         vars["newConvenerURL"] = newConvenerURL 
    709         searchConvenerURL = urlHandlers.UHSessionDataModificationNewConvenerSearch.getURL(self._session) 
    710         vars["searchConvenerURL"] = searchConvenerURL 
    711         vars["remConvenersURL"]=quoteattr(str(urlHandlers.UHSessionModConvenersRem.getURL(self._session))) 
    712696        vars["dataModificationURL"]=quoteattr(str(urlHandlers.UHSessionDataModification.getURL(self._session))) 
    713697        vars["code"]=self.htmlText(self._session.getCode()) 
     
    731715            vars["startDate"]=self.htmlText(self._session.getAdjustedStartDate().strftime("%A %d %B %Y %H:%M")) 
    732716            vars["endDate"]=self.htmlText(self._session.getAdjustedEndDate().strftime("%A %d %B %Y %H:%M")) 
    733         vars["conveners"]=self._getConvenersHTML() 
    734717        vars["bgcolor"] = self._session.getColor() 
    735718        vars["textcolor"] = self._session.getTextColor() 
     
    747730            vars["Code"]="" 
    748731            vars["Rowspan"]=4 
     732        vars["confId"] = self._session.getConference().getId() 
     733        vars["sessionId"] = self._session.getId() 
    749734        return vars 
    750735 
     
    816801#--------------------------------------------------------------------------- 
    817802 
    818 class WPSessionDataModificationConvenerSelect( WPSessionModifBase): 
    819  
    820     #def _setActiveTab( self ): 
    821     #    self._tabContribList.setActive() 
    822  
    823     def _getTabContent( self, params ): 
    824         searchAction = str(self._rh.getCurrentURL()) 
    825         newButtonAction = params["newButtonAction"] 
    826         searchExt = params.get("searchExt","") 
    827         if searchExt != "": 
    828             searchLocal = False 
    829         else: 
    830             searchLocal = True 
    831         p = wcomponents.WComplexSelection(self._conf,searchAction, addTo = 5, forceWithoutExtAuth=searchLocal) 
    832         return p.getHTML(params) 
    833  
    834 #--------------------------------------------------------------------------- 
    835  
    836 class WPSessionDataModificationConvenerNew(WPSessionModifBase): 
    837  
    838     #def _setActiveTab( self ): 
    839     #    self._tabContribList.setActive() 
    840  
    841     def _getTabContent( self, params ): 
    842         p = wcomponents.WNewPerson() 
    843  
    844         if params.get("formTitle",None) is None : 
    845             params["formTitle"] =_("Define new convener") 
    846         if params.get("titleValue",None) is None : 
    847             params["titleValue"] = "" 
    848         if params.get("surNameValue",None) is None : 
    849             params["surNameValue"] = "" 
    850         if params.get("nameValue",None) is None : 
    851             params["nameValue"] = "" 
    852         if params.get("emailValue",None) is None : 
    853             params["emailValue"] = "" 
    854         if params.get("addressValue",None) is None : 
    855             params["addressValue"] = "" 
    856         if params.get("affiliationValue",None) is None : 
    857             params["affiliationValue"] = "" 
    858         if params.get("phoneValue",None) is None : 
    859             params["phoneValue"] = "" 
    860         if params.get("faxValue",None) is None : 
    861             params["faxValue"] = "" 
    862  
    863  
    864         params["disabledRole"] = False 
    865         params["roleDescription"] = i18nformat(""" _("Coordinator")<br> _("Manager")""") 
    866         if params.has_key("submissionControlValue") : 
    867             params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl" checked> _("Give coordinator rights to the convener").<br> 
    868                                       <input type="checkbox" name="managerControl" checked> _("Give management rights to the convener").""") 
    869         else: 
    870             params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").<br> 
    871                                       <input type="checkbox" name="managerControl"> _("Give management rights to the convener").""") 
    872         params["disabledNotice"] = True 
    873         params["noticeValue"] = i18nformat("""<i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have 
    874          an Indico account, he or she will be sent an email asking to create an account. After the account creation the 
    875          user will automatically be given coordinator rights").</i>""") 
    876  
    877  
    878         if params.get("formAction",None) is None : 
    879             formAction = urlHandlers.UHSessionDataModificationPersonAdd.getURL(self._conf) 
    880             formAction.addParam("sessionId",self._session.getId()) 
    881             formAction.addParam("orgin","new") 
    882             formAction.addParam("typeName","convener") 
    883             params["formAction"] = formAction 
    884  
    885         return p.getHTML(params) 
    886  
    887 #--------------------------------------------------------------------------- 
    888  
    889803class WPModEditDataConfirmation(WPSessionModification): 
    890804 
     
    894808        url=urlHandlers.UHSessionDataModification.getURL(self._session) 
    895809        return wc.getHTML(msg,url,params) 
    896  
    897  
    898 class WPModConvenerNew(WPSessionModification): 
    899  
    900     def _getTabContent(self,params): 
    901         caption= _("Adding a new convener") 
    902         wc=wcomponents.WConfModParticipEdit(title=caption) 
    903         params["postURL"]=urlHandlers.UHSessionModConvenerNew.getURL(self._session) 
    904         params["addToManagersList"]= i18nformat(""" 
    905                                     <tr> 
    906                                         <td nowrap class="titleCellTD"> 
    907                                             <span class="titleCellFormat"> _("Specific rights")</span> 
    908                                         </td> 
    909                                         <td bgcolor="white" width="100%%" valign="top" class="blacktext"> 
    910                                             <input type="radio" name="specialRights" value="none" checked> _("Do not give specific rights").<br> 
    911                                             <input type="radio" name="specialRights" value="manager"> _("Give session manager rights to the convener").<br> 
    912                                             <input type="radio" name="specialRights" value="coordinator"> _("Give session coordinator rights to the convener").<br><br><i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have an Indico account, he or she will be sent an email asking to create an account. After the account creation the user will automatically be given the specific rights").</i> 
    913                                         </td> 
    914                                     </tr> 
    915                                     """) 
    916         return wc.getHTML( params ) 
    917  
    918  
    919  
    920 class WPModConvenerEdit(WPSessionModification): 
    921  
    922 ##    def _getTabContent(self,params): 
    923 ##        caption="Edit convener data" 
    924 ##        conv=params["convener"] 
    925 ##        wc=wcomponents.WConfModParticipEdit(part=conv,title=caption) 
    926 ##        params["postURL"]=urlHandlers.UHSessionModConvenerEdit.getURL(conv) 
    927 ##        params["addToManagersList"]="" 
    928 ##        return wc.getHTML(params) 
    929  
    930     def _getTabContent(self,params): 
    931         p = wcomponents.WNewPerson() 
    932         conv = params["convener"] 
    933         params["formTitle"] =  _("Define new convener") 
    934         params["titleValue"] = conv.getTitle() 
    935         params["surNameValue"] = conv.getFamilyName() 
    936         params["nameValue"] = conv.getFirstName() 
    937         params["emailValue"] = conv.getEmail() 
    938         params["addressValue"] = conv.getAddress() 
    939         params["affiliationValue"] = conv.getAffiliation() 
    940         params["phoneValue"] = conv.getPhone() 
    941         params["faxValue"] = conv.getFax() 
    942  
    943         params["disabledRole"] = False 
    944         params["roleDescription"] =  i18nformat(""" _("Coordinator")<br> _("Manager")""") 
    945         session = conv.getSession() 
    946         av = user.AvatarHolder().match({"email":conv.getEmail()}) 
    947         params["disabledNotice"] = True 
    948         coordValue =  i18nformat("""<input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").""") 
    949         if (av and av[0] in session.getCoordinatorList()) or conv.getEmail() in session.getCoordinatorEmailList(): 
    950             coordValue = _("""The convener is already a coordinator""") 
    951         else: 
    952             params["disabledNotice"] = False 
    953  
    954         managerValue =  i18nformat("""<input type="checkbox" name="managerControl"> _("Give management rights to the convener").""") 
    955         if (av and av[0] in session.getManagerList() ) or conv.getEmail() in session.getAccessController().getModificationEmail(): 
    956             managerValue = _("""The convener is already a manager""") 
    957         else: 
    958             params["disabledNotice"] = False 
    959  
    960         params["roleValue"] = """ %s<br> 
    961                                   %s"""%(coordValue, managerValue) 
    962  
    963         params["noticeValue"] =  i18nformat("""<i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have 
    964          an Indico account, he or she will be sent an email asking to create an account. After the account creation the 
    965          user will automatically be given coordinator/manager rights").</i>""") 
    966  
    967         formAction = urlHandlers.UHSessionModConvenerEdit.getURL(conv) 
    968         formAction.addParam("orgin","new") 
    969         formAction.addParam("typeName","convener") 
    970         params["formAction"] = formAction 
    971  
    972         return p.getHTML(params) 
    973  
    974810 
    975811 
  • indico/MaKaC/webinterface/rh/conferenceModif.py

    r38f650 raf424d9  
    960960            else: 
    961961                raise MaKaCError( _("Session title cannot be empty"), _("Session")) 
    962         elif self._action == "New convener": 
    963             self._preserveParams(params) 
    964             self._redirect(urlHandlers.UHConfNewSessionConvenerNew.getURL(self._conf)) 
    965         elif self._action == "Search convener": 
    966             self._preserveParams(params) 
    967             self._redirect(urlHandlers.UHConfNewSessionConvenerSearch.getURL(self._conf)) 
    968         elif self._action == "Remove conveners": 
    969             self._removePersons(params, "convener") 
    970         elif self._action == "Add as convener": 
    971             self._preserveParams(params) 
    972             url = urlHandlers.UHConfNewSessionPersonAdd.getURL(self._conf) 
    973             url.addParam("orgin","added") 
    974             url.addParam("typeName","convener") 
    975             self._redirect(url) 
    976962        else : 
    977963            p = conferences.WPConfAddSession(self,self._target,self._day) 
     
    10891075        return "".join(html) 
    10901076 
    1091 #------------------------------------------------------------------------------------- 
    1092  
    1093 class RHNewSessionConvenerSearch( RHConferenceModifBase ): 
    1094     _uh = urlHandlers.UHConfNewSessionConvenerSearch 
    1095  
    1096     def _checkParams( self, params): 
    1097         RHConferenceModifBase._checkParams(self,params) 
    1098  
    1099     def _process( self ): 
    1100         params = self._getRequestParams() 
    1101  
    1102         params["newButtonAction"] = str(urlHandlers.UHConfNewSessionConvenerNew.getURL()) 
    1103         addURL = urlHandlers.UHConfNewSessionPersonAdd.getURL() 
    1104         addURL.addParam("orgin","selected") 
    1105         addURL.addParam("typeName","convener") 
    1106         params["addURL"] = addURL 
    1107         p = conferences.WPNewSessionConvenerSelect( self, self._target) 
    1108         return p.display(**params) 
    1109  
    1110 #------------------------------------------------------------------------------------- 
    1111  
    1112 class RHNewSessionConvenerNew( RHConferenceModifBase ): 
    1113     _uh = urlHandlers.UHConfNewSessionConvenerNew 
    1114  
    1115     def _checkParams( self, params): 
    1116         RHConferenceModifBase._checkParams(self,params) 
    1117  
    1118     def _process( self ): 
    1119         p = conferences.WPNewSessionConvenerNew( self, self._target, {}) 
    1120  
    1121         return p.display() 
    1122  
    1123 #------------------------------------------------------------------------------------- 
    1124  
    1125 class RHNewSessionPersonAdd( RHConferenceModifBase ): 
    1126     _uh = urlHandlers.UHConfNewSessionPersonAdd 
    1127  
    1128     def _checkParams( self, params): 
    1129         RHConferenceModifBase._checkParams(self,params) 
    1130         self._typeName = params.get("typeName",None) 
    1131         if self._typeName  is None : 
    1132             raise MaKaCError( _("Type name of the person to add is not set.")) 
    1133  
    1134     def _process( self ): 
    1135         params = self._getRequestParams() 
    1136         self._errorList = [] 
    1137  
    1138         definedList = self._getDefinedList(self._typeName) 
    1139         if definedList is None : 
    1140             definedList = [] 
    1141  
    1142         if params.get("orgin","") == "new" : 
    1143             if params.get("ok",None) is None : 
    1144                 self._redirect(urlHandlers.UHConfAddSession.getURL(self._conf)) 
    1145                 return 
    1146             else : 
    1147  
    1148                 if (params["email"]=="" and params.has_key("submissionControl")) or (not utils.validMail(params["email"]) and params["email"]!=""): 
    1149                     param={} 
    1150                     param["surNameValue"] = str(params["surName"]) 
    1151                     param["nameValue"] = str(params["name"]) 
    1152                     param["emailValue"] = str(params["email"]) 
    1153                     param["titleValue"] = str(params["title"]) 
    1154                     param["addressValue"] = str(params["address"]) 
    1155                     param["affiliationValue"] = str(params["affiliation"]) 
    1156                     param["phoneValue"] = str(params["phone"]) 
    1157                     param["faxValue"] = str(params["fax"]) 
    1158                     param["msg"] = "INSERT A VALID E-MAIL ADRESS" 
    1159                     if params.has_key("submissionControl"): 
    1160                         param["submissionControlValue"]="checked" 
    1161  
    1162                     p=conferences.WPNewSessionConvenerNew(self, self._conf, param) 
    1163                     return p.display() 
    1164  
    1165                 person = SessionChair() 
    1166                 person.setFirstName(params["name"]) 
    1167                 person.setFamilyName(params["surName"]) 
    1168                 person.setEmail(params["email"]) 
    1169                 person.setAffiliation(params["affiliation"]) 
    1170                 person.setAddress(params["address"]) 
    1171                 person.setPhone(params["phone"]) 
    1172                 person.setTitle(params["title"]) 
    1173                 person.setFax(params["fax"]) 
    1174                 if not self._alreadyDefined(person, definedList) : 
    1175                     definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")]) 
    1176                 else : 
    1177                     self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName)) 
    1178  
    1179         elif params.get("orgin","") == "selected" : 
    1180             selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[])) 
    1181  
    1182             for s in selectedList : 
    1183                 if s[0:8] == "*author*" : 
    1184                     auths = self._conf.getAuthorIndex() 
    1185                     selected = auths.getById(s[9:])[0] 
    1186                 else : 
    1187                     ph = user.PrincipalHolder() 
    1188                     selected = ph.getById(s) 
    1189                 if isinstance(selected, user.Avatar) : 
    1190                     person = SessionChair() 
    1191                     person.setDataFromAvatar(selected) 
    1192                     if not self._alreadyDefined(person, definedList) : 
    1193                         definedList.append([person,params.has_key("submissionControl")]) 
    1194                     else : 
    1195                         self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName)) 
    1196  
    1197                 elif isinstance(selected, user.Group) : 
    1198                     for member in selected.getMemberList() : 
    1199                         person = SessionChair() 
    1200                         person.setDataFromAvatar(member) 
    1201                         if not self._alreadyDefined(person, definedList) : 
    1202                             definedList.append([person,params.has_key("submissionControl")]) 
    1203                         else : 
    1204                             self._errorList.append( _("%s has been already defined as %s of this session"))%(presenter.getFullName(),self._typeName) 
    1205                 else : 
    1206                     person = SessionChair() 
    1207                     person.setTitle(selected.getTitle()) 
    1208                     person.setFirstName(selected.getFirstName()) 
    1209                     person.setFamilyName(selected.getFamilyName()) 
    1210                     person.setEmail(selected.getEmail()) 
    1211                     person.setAddress(selected.getAddress()) 
    1212                     person.setAffiliation(selected.getAffiliation()) 
    1213                     person.setPhone(selected.getPhone()) 
    1214                     person.setFax(selected.getFax()) 
    1215                     if not self._alreadyDefined(person, definedList) : 
    1216                         definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")]) 
    1217                     else : 
    1218                         self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName)) 
    1219  
    1220         elif params.get("orgin","") == "added" : 
    1221             preservedParams = self._getPreservedParams() 
    1222             chosen = preservedParams.get("%sChosen"%self._typeName,None) 
    1223             if chosen is None or chosen == "" : 
    1224                 self._redirect(urlHandlers.UHConfAddSession.getURL(self._target)) 
    1225                 return 
    1226             index = chosen.find("-") 
    1227  
    1228             chosenPerson = None 
    1229  
    1230             if index == -1: 
    1231                 ah = user.AvatarHolder() 
    1232                 chosenPerson = SessionChair() 
    1233                 chosenPerson.setDataFromAvatar(ah.getById(chosen)) 
    1234             else: 
    1235                 objectId = chosen[1:index] 
    1236                 chosenId = chosen[index+1:len(chosen)] 
    1237                 if chosen[0:1] == "d" : 
    1238                     object = self._conf.getSessionById(objectId) 
    1239                 else : 
    1240                     object = self._conf.getContributionById(objectId) 
    1241                 if chosen[0:1] == "s" : 
    1242                     chosenPerson = object.getSpeakerById(chosenId) 
    1243                 elif chosen[0:1] == "a" : 
    1244                     chosenPerson = object.getAuthorById(chosenId) 
    1245                 elif chosen[0:1] == "c" : 
    1246                     chosenPerson = object.getCoAuthorById(chosenId) 
    1247                 elif chosen[0:1] == "d" : 
    1248                     chosenPerson = object.getConvenerById(chosenId) 
    1249             if chosenPerson is None : 
    1250                 self._redirect(urlHandlers.UHConfModScheduleNewContrib.getURL(self._target)) 
    1251                 return 
    1252             person = SessionChair() 
    1253             person.setTitle(chosenPerson.getTitle()) 
    1254             person.setFirstName(chosenPerson.getFirstName()) 
    1255             person.setFamilyName(chosenPerson.getFamilyName()) 
    1256             person.setEmail(chosenPerson.getEmail()) 
    1257             person.setAddress(chosenPerson.getAddress()) 
    1258             person.setAffiliation(chosenPerson.getAffiliation()) 
    1259             person.setPhone(chosenPerson.getPhone()) 
    1260             person.setFax(chosenPerson.getFax()) 
    1261             if not self._alreadyDefined(person, definedList) : 
    1262                 definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")]) 
    1263             else : 
    1264                 self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName)) 
    1265         else : 
    1266             self._redirect(urlHandlers.UHConfModifSchedule.getURL(self._target)) 
    1267             return 
    1268         preservedParams = self._getPreservedParams() 
    1269         preservedParams["errorMsg"] = self._errorList 
    1270         self._preserveParams(preservedParams) 
    1271         self._websession.setVar("%sList"%self._typeName,definedList) 
    1272  
    1273         self._redirect(urlHandlers.UHConfAddSession.getURL(self._conf)) 
    1274  
    1275  
    1276     def _getDefinedList(self, typeName): 
    1277         definedList = self._websession.getVar("%sList"%typeName) 
    1278         if definedList is None : 
    1279             return [] 
    1280         return definedList 
    1281  
    1282     def _alreadyDefined(self, person, definedList): 
    1283         if person is None : 
    1284             return True 
    1285         if definedList is None : 
    1286             return False 
    1287         fullName = person.getFullName() 
    1288         for p in definedList : 
    1289             if p[0].getFullName() == fullName : 
    1290                 return True 
    1291         return False 
    1292  
    1293     def _getPreservedParams(self): 
    1294         params = self._websession.getVar("preservedParams") 
    1295         if params is None : 
    1296             return {} 
    1297         return params 
    1298  
    1299     def _preserveParams(self, params): 
    1300         self._websession.setVar("preservedParams",params) 
    1301     def _removePreservedParams(self): 
    1302         self._websession.setVar("preservedParams",None) 
    13031077 
    13041078#------------------------------------------------------------------------------------- 
  • indico/MaKaC/webinterface/rh/sessionModif.py

    r10a79e raf424d9  
    277277                self._redirect(url) 
    278278                return 
    279         elif self._action == "New convener" : 
    280             self._preserveParams(params) 
    281             url = urlHandlers.UHSessionDataModificationConvenerSearch.getURL(self._conf) 
    282             url.addParam("sessionId",self._session.getId()) 
    283  
    284             self._redirect(url) 
    285         elif self._action == "Remove conveners" : 
    286             self._removePersons(params, "convener") 
    287         elif self._action == "Add convener" : 
    288             self._preserveParams(params) 
    289             url = urlHandlers.UHSessionDataModificationPersonAdd.getURL(self._conf) 
    290             url.addParam("sessionId",self._session.getId()) 
    291             url.addParam("orgin","added") 
    292             url.addParam("typeName","convener") 
    293             self._redirect(url) 
    294279        p=sessions.WPSessionDataModification(self,self._target) 
    295280        wf = self.getWebFactory() 
     
    372357#------------------------------------------------------------------------------------- 
    373358 
    374 class RHSessionDataModificationConvenerSearch( RHSessionModifBase): 
    375     _uh = urlHandlers.UHSessionDataModificationConvenerSearch 
    376  
    377     def _checkParams( self, params): 
    378         RHSessionModifBase._checkParams(self,params) 
    379  
    380     def _process( self ): 
    381         params = self._getRequestParams() 
    382  
    383         params["newButtonAction"] = str(urlHandlers.UHSessionDataModificationConvenerNew.getURL()) 
    384  
    385         addURL = urlHandlers.UHSessionDataModificationPersonAdd.getURL() 
    386         addURL.addParam("orgin","selected") 
    387         addURL.addParam("typeName","convener") 
    388         params["addURL"] = addURL 
    389         p = sessions.WPSessionDataModificationConvenerSelect( self, self._target) 
    390         return p.display(**params) 
    391  
    392 #------------------------------------------------------------------------------------- 
    393  
    394 class RHSessionDataModificationConvenerNew( RHSessionModifBase ): 
    395     _uh = urlHandlers.UHSessionDataModificationConvenerNew 
    396  
    397     def _checkParams( self, params): 
    398         RHSessionModifBase._checkParams(self,params) 
    399  
    400     def _process( self ): 
    401         p = sessions.WPSessionDataModificationConvenerNew( self, self._target) 
    402         return p.display() 
    403  
    404 #------------------------------------------------------------------------------------- 
    405  
    406 class RHSessionDataModificationPersonAdd( RHSessionModifBase ): 
    407     _uh = urlHandlers.UHSessionDataModificationPersonAdd 
    408  
    409     def _checkParams( self, params): 
    410         RHSessionModifBase._checkParams(self,params) 
    411         self._typeName = params.get("typeName",None) 
    412         if self._typeName  is None : 
    413             raise MaKaCError( _("Type name of the person to add is not set.")) 
    414  
    415     def _process( self ): 
    416         params = self._getRequestParams() 
    417         self._errorList = [] 
    418  
    419         definedList = self._getDefinedList(self._typeName) 
    420         if definedList is None : 
    421             definedList = [] 
    422  
    423         if params.get("orgin","") == "new" : 
    424             if params.get("ok",None) is None : 
    425                 url = urlHandlers.UHSessionDataModification.getURL(self._conf) 
    426                 url.addParam("sessionId",self._session.getId()) 
    427                 self._redirect(url) 
    428                 return 
    429             else : 
    430                 person = SessionChair() 
    431                 person.setFirstName(params["name"]) 
    432                 person.setFamilyName(params["surName"]) 
    433                 person.setEmail(params["email"]) 
    434                 person.setAffiliation(params["affiliation"]) 
    435                 person.setAddress(params["address"]) 
    436                 person.setPhone(params["phone"]) 
    437                 person.setTitle(params["title"]) 
    438                 person.setFax(params["fax"]) 
    439                 if not self._alreadyDefined(person, self._typeName) : 
    440                     self._session.addConvener(person) 
    441                     if params.has_key("submissionControl") : 
    442                         self._session.grantSubmission(person) 
    443                 else : 
    444                     self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName)) 
    445  
    446         elif params.get("orgin","") == "selected" : 
    447             selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[])) 
    448  
    449             for s in selectedList : 
    450                 if s[0:8] == "*author*" : 
    451                     auths = self._conf.getAuthorIndex() 
    452                     selected = auths.getById(s) 
    453                 else : 
    454                     ph = user.PrincipalHolder() 
    455                     selected = ph.getById(s) 
    456                 if isinstance(selected, user.Avatar) : 
    457                     person = SessionChair() 
    458                     person.setDataFromAvatar(selected) 
    459                     if not self._alreadyDefined(person, self._typeName) : 
    460                         self._session.addConvener(person) 
    461                         if params.has_key("submissionControl") : 
    462                             self._session.grantSubmission(person) 
    463                     else : 
    464                         self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName)) 
    465  
    466                 elif isinstance(selected, user.Group) : 
    467                     for member in selected.getMemberList() : 
    468                         person = SessionChair() 
    469                         person.setDataFromAvatar(member) 
    470                         if not self._alreadyDefined(person, self._typeName) : 
    471                             self._session.addConvener(person) 
    472                             if params.has_key("submissionControl") : 
    473                                 self._session.grantSubmission(person) 
    474                         else : 
    475                             self._errorList.append("%s has been already defined as %s of this session"%(presenter.getFullName(),self._typeName)) 
    476                 else : 
    477                     person = SessionChair() 
    478                     person.setTitle(selected.getTitle()) 
    479                     person.setFirstName(selected.getFirstName()) 
    480                     person.setFamilyName(selected.getFamilyName()) 
    481                     person.setEmail(selected.getEmail()) 
    482                     person.setAddress(selected.getAddress()) 
    483                     person.setAffiliation(selected.getAffiliation()) 
    484                     person.setPhone(selected.getPhone()) 
    485                     person.setFax(selected.getFax()) 
    486                     if not self._alreadyDefined(person, self._typeName) : 
    487                         self._session.addConvener(person) 
    488                         if params.has_key("submissionControl") : 
    489                             self._session.grantSubmission(person) 
    490                     else : 
    491                         self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName)) 
    492  
    493         elif params.get("orgin","") == "added" : 
    494             preservedParams = self._getPreservedParams() 
    495             chosen = preservedParams.get("%sChosen"%self._typeName,None) 
    496             if chosen is None or chosen == "" : 
    497                 url = urlHandlers.UHSessionDataModification.getURL(self._conf) 
    498                 url.addParam("sessionId",self._session.getId()) 
    499                 self._redirect(url) 
    500                 return 
    501             index = chosen.find("-") 
    502             objectId = chosen[1:index] 
    503             chosenId = chosen[index+1:len(chosen)] 
    504             if chosen[0:1] == "d" : 
    505                 object = self._conf.getSessionById(objectId) 
    506             else : 
    507                 object = self._conf.getContributionById(objectId) 
    508             chosenPerson = None 
    509             if chosen[0:1] == "s" : 
    510                 chosenPerson = object.getSpeakerById(chosenId) 
    511             elif chosen[0:1] == "a" : 
    512                 chosenPerson = object.getAuthorById(chosenId) 
    513             elif chosen[0:1] == "c" : 
    514                 chosenPerson = object.getCoAuthorById(chosenId) 
    515             elif chosen[0:1] == "d" : 
    516                 chosenPerson = object.getConvenerById(chosenId) 
    517             if chosenPerson is None : 
    518                 self._redirect(urlHandlers.UHConfModScheduleNewContrib.getURL(self._target)) 
    519                 return 
    520             person = SessionChair() 
    521             person.setTitle(chosenPerson.getTitle()) 
    522             person.setFirstName(chosenPerson.getFirstName()) 
    523             person.setFamilyName(chosenPerson.getFamilyName()) 
    524             person.setEmail(chosenPerson.getEmail()) 
    525             person.setAddress(chosenPerson.getAddress()) 
    526             person.setAffiliation(chosenPerson.getAffiliation()) 
    527             person.setPhone(chosenPerson.getPhone()) 
    528             person.setFax(chosenPerson.getFax()) 
    529             if not self._alreadyDefined(person, self._typeName) : 
    530                 self._session.addConvener(person) 
    531                 if params.has_key("submissionControl") : 
    532                     self._session.grantSubmission(person) 
    533             else : 
    534                 self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName)) 
    535         else : 
    536             url = urlHandlers.UHSessionDataModification.getURL(self._conf) 
    537             url.addParam("sessionId",self._session.getId()) 
    538             self._redirect(url) 
    539             return 
    540         preservedParams = self._getPreservedParams() 
    541         preservedParams["errorMsg"] = self._errorList 
    542         self._preserveParams(preservedParams) 
    543         self._websession.setVar("%sList"%self._typeName,definedList) 
    544  
    545         url = urlHandlers.UHSessionDataModification.getURL(self._conf) 
    546         url.addParam("sessionId",self._session.getId()) 
    547         self._redirect(url) 
    548  
    549  
    550     def _getDefinedList(self, typeName): 
    551         definedList = self._websession.getVar("%sList"%typeName) 
    552         if definedList is None : 
    553             return [] 
    554         return definedList 
    555  
    556     def _alreadyDefined(self, person, typeName): 
    557         if person is None : 
    558             return True 
    559         if typeName is None : 
    560             return True 
    561         fullName = person.getFullName() 
    562         list = None 
    563         if typeName == "convener" : 
    564             list = self._session.getConvenerList() 
    565         for p in list : 
    566             if p.getFullName() == fullName : 
    567                 return True 
    568         return False 
    569  
    570     def _getPreservedParams(self): 
    571         params = self._websession.getVar("preservedParams") 
    572         if params is None : 
    573             return {} 
    574         return params 
    575  
    576     def _preserveParams(self, params): 
    577         self._websession.setVar("preservedParams",params) 
    578     def _removePreservedParams(self): 
    579         self._websession.setVar("preservedParams",None) 
    580  
    581 #------------------------------------------------------------------------------------- 
    582  
    583 class RHSessionDataModificationNewConvenerCreate( RHSessionModifBase ): 
    584     _uh = urlHandlers.UHSessionDataModificationNewConvenerCreate 
    585  
    586     def _checkParams( self, params): 
    587         RHSessionModifBase._checkParams(self,params) 
    588  
    589     def _process( self ): 
    590  
    591         params = self._getRequestParams() 
    592         formAction = urlHandlers.UHSessionDataModificationConvenerAdd.getURL(self._conf) 
    593         formAction.addParam("sessionId",self._session.getId()) 
    594         formAction.addParam("orgin","new") 
    595         formAction.addParam("typeName","convener") 
    596         params["formAction"] = formAction 
    597         p = sessions.WPSessionDataModificationConvenerNew( self, self._target) 
    598         return p.display(**params) 
    599  
    600 #------------------------------------------------------------------------------------- 
    601  
    602 class RHSessionDataModificationNewConvenerSearch( RHSessionModifBase): 
    603     _uh = urlHandlers.UHSessionDataModificationNewConvenerSearch 
    604  
    605     def _checkParams( self, params): 
    606         RHSessionModifBase._checkParams(self,params) 
    607  
    608     def _process( self ): 
    609         params = self._getRequestParams() 
    610  
    611         params["newButtonAction"] = str(urlHandlers.UHSessionDataModificationNewConvenerCreate.getURL()) 
    612         addURL = urlHandlers.UHSessionDataModificationConvenerAdd.getURL() 
    613         addURL.addParam("orgin","selected") 
    614         addURL.addParam("typeName","convener") 
    615         params["addURL"] = addURL 
    616         p = sessions.WPSessionDataModificationConvenerSelect( self, self._target) 
    617         return p.display(**params) 
    618  
    619 #------------------------------------------------------------------------------------- 
    620  
    621 class RHSessionDataModificationConvenerAdd( RHSessionModifBase ): 
    622     _uh = urlHandlers.UHSessionDataModificationConvenerAdd 
    623  
    624     def _checkParams( self, params): 
    625         RHSessionModifBase._checkParams(self,params) 
    626         self._typeName = params.get("typeName",None) 
    627         if self._typeName  is None : 
    628             raise MaKaCError( _("Type name of the person to add is not set.")) 
    629  
    630     def _process( self ): 
    631         params = self._getRequestParams() 
    632         self._errorList = [] 
    633  
    634         if params.get("orgin","") == "new" : 
    635             if params.get("ok",None) is None : 
    636                 url = urlHandlers.UHSessionModification.getURL(self._conf) 
    637                 url.addParam("sessionId",self._session.getId()) 
    638                 self._redirect(url) 
    639                 return 
    640             else : 
    641                 person = SessionChair() 
    642                 person.setFirstName(params["name"]) 
    643                 person.setFamilyName(params["surName"]) 
    644                 person.setEmail(params["email"]) 
    645                 person.setAffiliation(params["affiliation"]) 
    646                 person.setAddress(params["address"]) 
    647                 person.setPhone(params["phone"]) 
    648                 person.setTitle(params["title"]) 
    649                 person.setFax(params["fax"]) 
    650  
    651                 self._session.addConvener(person) 
    652                 if params.has_key("coordinatorControl") : 
    653                     self._session.addCoordinator(person) 
    654                 if params.has_key("managerControl") : 
    655                     self._session.grantModification(person) 
    656  
    657         elif params.get("orgin","") == "selected" and not "cancel" in params: 
    658             selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[])) 
    659  
    660             for s in selectedList : 
    661                 if s[0:8] == "*author*" : 
    662                     auths = self._conf.getAuthorIndex() 
    663                     selected = auths.getById(s[9:])[0] 
    664                 else : 
    665                     ph = user.PrincipalHolder() 
    666                     selected = ph.getById(s) 
    667                 if isinstance(selected, user.Avatar) : 
    668                     person = SessionChair() 
    669                     person.setDataFromAvatar(selected) 
    670                     self._session.addConvener(person) 
    671                     if params.has_key("coordinatorControl") : 
    672                         self._session.addCoordinator(person) 
    673                     if params.has_key("managerControl") : 
    674                         self._session.grantModification(person) 
    675  
    676                 elif isinstance(selected, user.Group) : 
    677                     for member in selected.getMemberList() : 
    678                         person = SessionChair() 
    679                         person.setDataFromAvatar(member) 
    680                         self._session.addConvener(person) 
    681                         if params.has_key("coordinatorControl") : 
    682                             self._session.addCoordinator(person) 
    683                         if params.has_key("managerControl") : 
    684                             self._session.grantModification(person) 
    685  
    686                 else : 
    687                     person = SessionChair() 
    688                     person.setTitle(selected.getTitle()) 
    689                     person.setFirstName(selected.getFirstName()) 
    690                     person.setFamilyName(selected.getFamilyName()) 
    691                     person.setEmail(selected.getEmail()) 
    692                     person.setAddress(selected.getAddress()) 
    693                     person.setAffiliation(selected.getAffiliation()) 
    694                     person.setPhone(selected.getPhone()) 
    695                     person.setFax(selected.getFax()) 
    696                     self._session.addConvener(person) 
    697                     if params.has_key("coordinatorControl") : 
    698                         self._session.addCoordinator(person) 
    699                     if params.has_key("managerControl") : 
    700                         self._session.grantModification(person) 
    701  
    702         else : 
    703             url = urlHandlers.UHSessionModification.getURL(self._conf) 
    704             url.addParam("sessionId",self._session.getId()) 
    705             self._redirect(url) 
    706             return 
    707  
    708         url = urlHandlers.UHSessionModification.getURL(self._conf) 
    709         url.addParam("sessionId",self._session.getId()) 
    710         self._redirect(url) 
    711  
    712  
    713 #------------------------------------------------------------------------------------- 
    714  
    715359class RHSessionClose( RHSessionModifBase ): 
    716360    _uh = urlHandlers.UHSessionClose 
     
    726370        self._target.setClosed(False) 
    727371        self._redirect(urlHandlers.UHSessionModification.getURL(self._target)) 
    728  
    729 class RHConvenerNew(RHSessionModifBase): 
    730     _uh=urlHandlers.UHSessionModConvenerNew 
    731  
    732     def _checkParams(self, params): 
    733         RHSessionModifBase._checkParams(self,params) 
    734         self._action="" 
    735         if params.has_key("ok"): 
    736             self._action = "perform" 
    737         elif params.has_key("cancel"): 
    738             self._action = "cancel" 
    739  
    740     def _newConvener(self): 
    741         c=conference.SessionChair() 
    742         p=self._getRequestParams() 
    743         c.setTitle(p.get("title","")) 
    744         c.setFirstName(p.get("name","")) 
    745         c.setFamilyName(p.get("surName","")) 
    746         c.setAffiliation(p.get("affiliation","")) 
    747         c.setEmail(p.get("email","")) 
    748         c.setAddress(p.get("address","")) 
    749         c.setPhone(p.get("phone","")) 
    750         c.setFax(p.get("fax","")) 
    751         self._target.addConvener(c) 
    752         return c 
    753  
    754     def _process(self): 
    755         if self._action!="": 
    756             if self._action=="perform": 
    757                 conv=self._newConvener() 
    758                 sr=self._getRequestParams().get("specialRights","none") 
    759                 if sr in ["manager","coordinator"]: 
    760                     if self._getRequestParams().get("email","").strip() == "": 
    761                         raise FormValuesError("If you want to add specific righst to this convener, please enter their email") 
    762                     if sr == "manager": 
    763                         self._target.grantModification(conv) 
    764                     elif sr == "coordinator": 
    765                         self._target.addCoordinator(conv) 
    766             url=urlHandlers.UHSessionModification.getURL(self._target) 
    767             self._redirect(url) 
    768         else: 
    769             p=sessions.WPModConvenerNew(self,self._session) 
    770             wf = self.getWebFactory() 
    771             if wf != None: 
    772                 p = wf.getModConvenerNew(self,self._session) 
    773             return p.display(**self._getRequestParams()) 
    774  
    775  
    776 class RHConvenersRem( RHSessionModifBase ): 
    777     _uh = urlHandlers.UHSessionModConvenersRem 
    778  
    779     def _checkParams( self, params ): 
    780         RHSessionModifBase._checkParams( self, params ) 
    781         self._conv=[] 
    782         for id in self._normaliseListParam(params.get("selConv",[])): 
    783             self._conv.append(self._target.getConvenerById(id)) 
    784  
    785     def _process( self ): 
    786         for conv in self._conv: 
    787             self._session.removeConvener(conv) 
    788         self._redirect(urlHandlers.UHSessionModification.getURL(self._session)) 
    789  
    790  
    791 class RHConvenerEdit(RHSessionModifBase): 
    792  
    793     def _checkParams(self,params): 
    794         RHSessionModifBase._checkParams(self, params) 
    795         self._convId=params["convId"] 
    796         self._action="" 
    797         if params.has_key("ok"): 
    798             self._action = "perform" 
    799         elif params.has_key("cancel"): 
    800             self._action = "cancel" 
    801  
    802     def _setConvenerData(self): 
    803         c=self._target.getConvenerById(self._convId) 
    804         p = self._getRequestParams() 
    805         c.setTitle(p.get("title","")) 
    806         c.setFirstName(p.get("name","")) 
    807         c.setFamilyName(p.get("surName","")) 
    808         c.setAffiliation(p.get("affiliation","")) 
    809         c.setAddress(p.get("address","")) 
    810         c.setPhone(p.get("phone","")) 
    811         c.setFax(p.get("fax","")) 
    812  
    813         c.setEmail(p.get("email","")) 
    814  
    815         if p.get("coordinatorControl", None): 
    816             self._target.addCoordinator(c) 
    817         if p.get("managerControl", None): 
    818             self._target.grantModification(c) 
    819  
    820 ##        grant=0 
    821 ##        if c.getEmail().lower().strip() != p.get("email","").lower().strip(): 
    822 ##            #----If it's already in the pending queue in order to grant 
    823 ##            #    modification/coordination rights we must unindex and after the modification of the email, 
    824 ##            #    index again... 
    825 ##            if self._target.getConference().getPendingQueuesMgr().isPendingManager(c): 
    826 ##                self._target.getConference().getPendingQueuesMgr().removePendingManager(c) 
    827 ##                grant=1 
    828 ##            if self._target.getConference().getPendingQueuesMgr().isPendingCoordinator(c): 
    829 ##                self._target.getConference().getPendingQueuesMgr().removePendingCoordinator(c) 
    830 ##                grant=2 
    831 ##            #----- 
    832  
    833 ##        c.setEmail(p.get("email","")) 
    834 ## 
    835 ##        if grant==1: 
    836 ##            self._target.grantModification(c) 
    837 ##        if grant==2: 
    838 ##            self._target.addCoordinator(c) 
    839  
    840  
    841     def _process(self): 
    842         if self._action != "": 
    843             if self._action == "perform": 
    844                 self._setConvenerData() 
    845             url=urlHandlers.UHSessionModification.getURL(self._target) 
    846             self._redirect(url) 
    847         else: 
    848             c=self._target.getConvenerById(self._convId) 
    849             p=sessions.WPModConvenerEdit(self,self._target) 
    850             wf = self.getWebFactory() 
    851             if wf != None: 
    852                 p = wf.getModConvenerEdit(self, self._target) 
    853             return p.display(convener=c) 
    854372 
    855373 
  • indico/MaKaC/webinterface/tpls/SessionModifMain.tpl

    rc0de5a raf424d9  
    4343<tr> 
    4444  <td class="dataCaptionTD"><span class="dataCaptionFormat"> ${ _("Default conveners")}</span></td> 
    45   <form action=${ remConvenersURL } method="POST"> 
    4645  <td colspan="2"> 
    47   <table width="100%"><tr> 
    48   <td bgcolor="white" valign="top" class="blacktext"> 
    49     ${ conveners } 
    50   </td> 
    51   <td align="right" valign="bottom"> 
    52     <table> 
    53     <tr> 
    54       <td> 
    55         <input type="submit" class="btn" value="${ _("remove")}"> 
    56       </td> 
    57       </form> 
    58       <form action=${ newConvenerURL } method="POST"> 
    59       <td> 
    60         <input type="submit" class="btn" value="${ _("new")}"> 
    61       </td> 
    62       </form> 
    63       <form action=${ searchConvenerURL } method="POST"> 
    64       <td> 
    65         <input type="submit" class="btn" value="${ _("search")}"> 
    66       </td> 
    67       </form> 
    68     </tr> 
    69     </table> 
    70   </td> 
    71   </tr></table> 
    72   </td> 
     46      <table width="100%"> 
     47          <tr> 
     48              <td style="width: 80%"><ul id="inPlaceConveners" class="UIPeopleList"></ul></td> 
     49              <td nowrap valign="top" style="width: 20%; text-align:right;"> 
     50                  <span id="inPlaceConvenersMenu" onmouseover="this.className = 'mouseover'" onmouseout="this.className = ''"> 
     51                      <a class="dropDownMenu fakeLink"  style="margin-left: 15px; margin-right: 15px" onclick="convenerManager.addManagementMenu();">${ _("Add convener")}</a> 
     52                  </span> 
     53              </td> 
     54          </tr> 
     55       </table> 
     56   </td> 
    7357</tr> 
    7458<tr> 
     
    7660</tr> 
    7761</table> 
     62 
     63<script> 
     64 
     65var convenerManager = new SessionConvenerManager('${ confId }', '${ sessionId }', $E('inPlaceConveners'), $E('inPlaceConvenersMenu'), 
     66        "convener"); 
     67 
     68</script> 
  • indico/MaKaC/webinterface/urlHandlers.py

    r10a79e raf424d9  
    11381138    _relativeURL = "confModifSchedule.py/performAddSession" 
    11391139 
    1140 class UHConfNewSessionConvenerSearch(URLHandler): 
    1141     _relativeURL = "sessionCreation.py/convenerSearch" 
    1142  
    1143 class UHConfNewSessionConvenerNew(URLHandler): 
    1144     _relativeURL = "sessionCreation.py/convenerNew" 
    1145  
    1146 class UHConfNewSessionPersonAdd(URLHandler): 
    1147     _relativeURL = "sessionCreation.py/personAdd" 
    1148  
    1149 class UHSessionDataModificationConvenerSearch(URLHandler): 
    1150     _relativeURL = "sessionModification.py/convenerSearch" 
    1151  
    1152 class UHSessionDataModificationConvenerNew(URLHandler): 
    1153     _relativeURL = "sessionModification.py/convenerNew" 
    1154  
    1155 class UHSessionDataModificationPersonAdd(URLHandler): 
    1156     _relativeURL = "sessionModification.py/personAdd" 
    1157  
    1158 class UHSessionDataModificationNewConvenerSearch(URLHandler): 
    1159     _relativeURL = "sessionModification.py/newConvenerSearch" 
    1160  
    1161 class UHSessionDataModificationNewConvenerCreate(URLHandler): 
    1162     _relativeURL = "sessionModification.py/newConvenerCreate" 
    1163  
    1164 class UHSessionDataModificationConvenerAdd(URLHandler): 
    1165     _relativeURL = "sessionModification.py/convenerAdd" 
    11661140 
    11671141class UHConfAddContribution( URLHandler ): 
     
    24462420class UHSessionDatesModification( URLHandler ): 
    24472421    _relativeURL = "sessionModification.py/modifyDates" 
    2448  
    2449 class UHSessionModConvenerNew( URLHandler ): 
    2450     _relativeURL = "sessionModification.py/newConvener" 
    2451  
    2452  
    2453 class UHSessionModConvenersRem( URLHandler ): 
    2454     _relativeURL = "sessionModification.py/remConveners" 
    2455  
    2456  
    2457 class UHSessionModConvenerEdit( URLHandler ): 
    2458     _relativeURL = "sessionModification.py/editConvener" 
    2459  
    24602422 
    24612423class UHSessionModSlotConvenerNew( URLHandler ): 
  • indico/MaKaC/webinterface/wcomponents.py

    r38f650 raf424d9  
    45344534 
    45354535 
    4536 class WConfModParticipEdit(WTemplated): 
    4537  
    4538     def __init__(self,title="",part=None): 
    4539         self._part=part 
    4540         self._ctitle=title 
    4541  
    4542     def getVars(self): 
    4543         vars=WTemplated.getVars(self) 
    4544         vars["postURL"]=quoteattr(str(vars["postURL"])) 
    4545         vars["caption"]=self.htmlText(self._ctitle) 
    4546         title,firstName,familyName="","","" 
    4547         affiliation,email,address,phone,fax="","","","","" 
    4548         if self._part is not None: 
    4549             title=self._part.getTitle() 
    4550             firstName=self._part.getFirstName() 
    4551             familyName=self._part.getFamilyName() 
    4552             affiliation=self._part.getAffiliation() 
    4553             email=self._part.getEmail() 
    4554             address=self._part.getAddress() 
    4555             phone=self._part.getPhone() 
    4556             fax=self._part.getFax() 
    4557         vars["titles"]=TitlesRegistry().getSelectItemsHTML(title) 
    4558         vars["surName"]=quoteattr(familyName) 
    4559         vars["name"]=quoteattr(firstName) 
    4560         vars["affiliation"]=quoteattr(affiliation) 
    4561         vars["email"]=quoteattr(email) 
    4562         vars["address"]=address 
    4563         vars["phone"]=quoteattr(phone) 
    4564         vars["fax"]=quoteattr(fax) 
    4565         if not vars.has_key("addToManagersList"): 
    4566             vars["addToManagersList"]="" 
    4567         return vars 
    4568  
    45694536class WSessionModEditDataCode(WTemplated): 
    45704537 
  • indico/htdocs/js/indico/Core/Dialogs/Users.js

    rcb55f2 raf424d9  
    12831283            self.parameterManager = new IndicoUtil.parameterManager(); 
    12841284 
    1285             var grant = []; 
     1285            var grantSubmission = []; 
    12861286            var grantManagement = []; 
     1287            var grantCoordination = []; 
    12871288            var warning = []; 
    12881289            if (this.grantSubmission) { 
    1289                 grant = [$T('Grant submission rights'), $B(Html.checkbox({}), userData.accessor('submission'))]; 
     1290                grantSubmission = [$T('Grant submission rights'), $B(Html.checkbox({}), userData.accessor('submission'))]; 
    12901291                warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 
    12911292                        $T('he or she will be sent an email asking to register as a user.'), Html.br(), 
     
    12991300                           $T(' After the account creation the user will automatically be'), Html.br(), 
    13001301                           $T(' given management rights.'))]; 
     1302            } 
     1303 
     1304            if (this.grantCoordination) { 
     1305                grantCoordination = [$T('Give coordination rights.'), $B(Html.checkbox({}), userData.accessor('coordinator'))]; 
     1306                warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 
     1307                           $T('he or she will be sent an email asking to create an account.'), Html.br(), 
     1308                           $T(' After the account creation the user will automatically be'), Html.br(), 
     1309                           $T(' given coordination rights.'))]; 
     1310            } 
     1311            if (this.grantManagement && this.grantCoordination) { 
     1312                warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 
     1313                        $T('he or she will be sent an email asking to create an account.'), Html.br(), 
     1314                        $T(' After the account creation the user will automatically be'), Html.br(), 
     1315                        $T(' given the rights.'))]; 
    13011316            } 
    13021317 
     
    13101325               [$T('Telephone'), $B(Html.edit({style: {width: '150px'}}), userData.accessor('phone'))], 
    13111326               [$T('Fax'), $B(Html.edit({style: {width: '150px'}}), userData.accessor('fax'))], 
    1312                grant, grantManagement, warning]); 
     1327               grantSubmission, grantManagement, grantCoordination, warning]); 
    13131328 
    13141329             return this.ExclusivePopupWithButtons.prototype.draw.call(this, form); 
     
    13301345 
    13311346     }, 
    1332      function(title, userData, action, grantSubmission, grantManagement, allowEmptyEmail) { 
     1347     function(title, userData, action, grantSubmission, grantManagement, grantCoordination, allowEmptyEmail) { 
    13331348         this.userData = userData; 
    13341349         this.action = action; 
    13351350         this.grantSubmission = exists(grantSubmission)?grantSubmission:false; 
    13361351         this.grantManagement = exists(grantManagement)?grantManagement:false; 
     1352         this.grantCoordination = exists(grantCoordination)?grantCoordination:false; 
    13371353         this.allowEmptyEmail = exists(allowEmptyEmail)?allowEmptyEmail:true; 
    13381354         this.ExclusivePopup(title,  function(){return true;}); 
  • indico/htdocs/js/indico/Core/Widgets/UserList.js

    ra4433d raf424d9  
    1818 * @param: showGrantSubmissionCB -> Bool, show the checkbox to grant submission rights in the AddNew/Edit popup 
    1919 * @param: showAffiliation -> Bool, show the affiliation of the user 
     20 * @param: showGrantCoordinationCB -> Bool, show the checkbox to grant coordination rights in the AddNew/Edit popup 
    2021 */ 
    2122type("ListOfUsersManager", [], { 
     
    237238                        newUserPopup.close(); 
    238239                    } 
    239                 }, self.showGrantSubmissionCB, self.showGrantManagementCB); 
     240                }, self.showGrantSubmissionCB, self.showGrantManagementCB, self.showGrantCoordinationCB); 
    240241        newUserPopup.open(); 
    241242    }, 
     
    260261 
    261262    function(confId, methods, userListParams, inPlaceListElem, showRemoveIcon, showEditIcon, showFavouritesIcon, showOrderArrows, 
    262              kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation) { 
     263             kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation, showGrantCoordinationCB) { 
    263264        this.conferenceId = confId; 
    264265        this.methods = methods; 
     
    275276        this.showGrantManagementCB = showGrantManagementCB; 
    276277        this.showAffiliation = showAffiliation; 
     278        this.showGrantCoordinationCB = showGrantCoordinationCB; 
    277279        var self = this; 
    278280        if (userListParams) { 
  • indico/htdocs/js/indico/Management/Participants.js

    rcb55f2 raf424d9  
    4848                        newUserPopup.close(); 
    4949                    } 
    50                 }, false, false, false); 
     50                }, false, false, false, false); 
    5151        newUserPopup.open(); 
    5252    }, 
  • indico/htdocs/js/indico/Management/Sessions.js

    r10a79e raf424d9  
    11/* 
    22 * Manager for the modification control list of users/groups in session management 
    3  * 
    43 */ 
    54type("SessionControlManager", ["ModificationControlManager"], { 
     
    155154    } 
    156155); 
     156 
     157 
     158/* 
     159 * Manager for the list of conveners in session management 
     160 */ 
     161type("SessionConvenerManager", ["ListOfUsersManager"], { 
     162 
     163    _getAddExistingParams: function(userList) { 
     164        var params = {confId: this.confId, sessionId: this.sessionId, userList: userList}; 
     165        return params; 
     166    }, 
     167 
     168    _getAddNewParams: function(userData) { 
     169        var params = {confId: this.confId, sessionId: this.sessionId, userData: userData}; 
     170        return params; 
     171    }, 
     172 
     173    _getEditParams: function(userData) { 
     174        var params = {confId: this.confId, sessionId: this.sessionId, userData: userData, userId: userData.get('id')}; 
     175        return params; 
     176    }, 
     177 
     178    _getUserParams: function(userId) { 
     179        var params = {confId: this.confId, sessionId: this.sessionId, userId: userId}; 
     180        return params; 
     181    }, 
     182 
     183    _getModifyUserRightsParams: function(userId, kindOfRights) { 
     184        var params = {confId: this.confId, sessionId: this.sessionId, userId: userId, kindOfRights: kindOfRights}; 
     185        return params; 
     186    }, 
     187 
     188    _getRolesText: function(user) { 
     189        var text = '('; 
     190        var counter = 0; 
     191        if (user['isManager']) { 
     192            text += $T('Session manager'); 
     193            counter += 1; 
     194        } 
     195        if (user['isCoordinator']) { 
     196            if (counter > 0) 
     197                text += $T(', Session coordinator'); 
     198            else 
     199                text += $T('Session coordinator'); 
     200            counter += 1; 
     201        } 
     202        if (counter == 0) 
     203            return null; 
     204        else 
     205            return Html.small({style:{paddingLeft:'5px'}}, text + ')'); 
     206    }, 
     207 
     208    _updateUserList: function(result) { 
     209        var self = this; 
     210        // update the user list 
     211        this.inPlaceListElem.set(''); 
     212        for (var i=0; i<result.length; i++) { 
     213            var userRowElements = []; 
     214 
     215            var userText = Html.span({className:'nameLink', cssFloat:'left'}, result[i]['fullName'], this._getRolesText(result[i])); 
     216 
     217            userRowElements.push(userText); 
     218 
     219            // Options menu for each user 
     220            var optionsMenuSpan = Html.span({onmouseover:"this.className = 'mouseover'", 
     221                                        onmouseout:"this.className = ''", style:{cssFloat:'right'}}); 
     222 
     223            var optionsMenuLink = Html.a({id:'userMenu_' + result[i]['id'], className:'dropDownMenu fakeLink', 
     224                                     style:{marginLeft:'15px', marginRight:'15px'}}, $T('More')); 
     225            this._addParticipantMenu(optionsMenuLink, result[i]); 
     226            optionsMenuSpan.append(optionsMenuLink); 
     227            userRowElements.push(optionsMenuSpan); 
     228 
     229            // edit icon 
     230            var imageEdit = Html.img({ 
     231                src: imageSrc("edit"), 
     232                alt: $T('Edit ') + this.userCaption, 
     233                title: $T('Edit this ') + this.userCaption, 
     234                className: 'UIRowButton2', 
     235                id: 'edit_'+result[i]['id'], 
     236                style:{cssFloat:'right', cursor:'pointer'} 
     237            }); 
     238 
     239            imageEdit.observeClick(function(event) { 
     240                if (event.target) { // Firefox 
     241                    var userId = event.target.id.split('_')[1]; 
     242                } else { // IE 
     243                    var userId = event.srcElement.id.split('_')[1]; 
     244                } 
     245                self._getUserData(self.methods["getUserData"], self._getUserParams(userId)); 
     246            }); 
     247            userRowElements.push(imageEdit); 
     248 
     249            // remove icon 
     250            var imageRemove = Html.img({ 
     251                src: imageSrc("remove"), 
     252                alt: $T('Remove ') + this.userCaption, 
     253                title: $T('Remove this ') + this.userCaption + $T(' from the list'), 
     254                className: 'UIRowButton2', 
     255                id: 'remove_'+result[i]['id'], 
     256                style:{marginRight:'15px', cssFloat:'right', cursor:'pointer'} 
     257            }); 
     258 
     259            imageRemove.observeClick(function(event) { 
     260                if (event.target) { // Firefox 
     261                    var userId = event.target.id.split('_')[1]; 
     262                } else { // IE 
     263                    var userId = event.srcElement.id.split('_')[1]; 
     264                } 
     265                self._manageUserList(self.methods["remove"], self._getUserParams(userId), false); 
     266            }); 
     267            userRowElements.push(imageRemove); 
     268 
     269            var row = Html.li({className: this.elementClass, onmouseover: "this.style.backgroundColor = '#ECECEC';", 
     270                                onmouseout : "this.style.backgroundColor='#ffffff';", style:{cursor:'auto'}}); 
     271 
     272            for (var j=userRowElements.length-1; j>=0; j--) { // Done the 'for' like this because of IE7 
     273                row.append(userRowElements[j]); 
     274            } 
     275 
     276            this.inPlaceListElem.append(row); 
     277        } 
     278    }, 
     279 
     280    _showEditUserPopup: function(userData) { 
     281        var self = this; 
     282        // get the user data 
     283        var user = $O(userData); 
     284        var editUserPopup = new UserDataPopup( 
     285                $T('Edit ') + self.userCaption + $T(' data'), 
     286                user, 
     287                function(newData) { 
     288                    if (editUserPopup.parameterManager.check()) { 
     289                        self._manageUserList(self.methods["edit"], self._getEditParams(newData)); 
     290                        editUserPopup.close(); 
     291                    } 
     292                }, false, !userData['isManager'], !userData['isCoordinator'], true); 
     293        editUserPopup.open(); 
     294    }, 
     295 
     296        addManagementMenu: function(){ 
     297        var self = this; 
     298        this.inPlaceMenu.observeClick(function(e) { 
     299            var menuItems = {}; 
     300 
     301            menuItems[$T('Add existing')] = function(){ self._addExistingUser($T("Add ") + self.userCaption, true, this.confId, false, 
     302                                                                           true, true, false, true); }; 
     303            menuItems[$T('Add new')] = function(){ self._addNonExistingUser(); }; 
     304 
     305            var menu = new PopupMenu(menuItems, [self.inPlaceMenu], "popupList"); 
     306            var pos = self.inPlaceMenu.getAbsolutePosition(); 
     307            menu.open(pos.x, pos.y + 20); 
     308            return false; 
     309        }); 
     310    }, 
     311 
     312    _addParticipantMenu: function(element, user) { 
     313        var self = this; 
     314 
     315        element.observeClick(function(e) { 
     316            var menuItems = {}; 
     317 
     318            if (!user['isManager']) { 
     319                menuItems[$T('Give management rights')] = function() { 
     320                    self._manageUserList(self.methods["grantRights"], self._getModifyUserRightsParams(user['id'], "management"), false); 
     321                    menu.close(); 
     322                }; 
     323            } else { 
     324                menuItems[$T('Remove management rights')] = function() { 
     325                    self._manageUserList(self.methods["revokeRights"], self._getModifyUserRightsParams(user['id'], "management"), false); 
     326                    menu.close(); 
     327                }; 
     328            } 
     329 
     330            if (!user['isCoordinator']) { 
     331                menuItems[$T('Give coordination rights')] = function() { 
     332                    self._manageUserList(self.methods["grantRights"], self._getModifyUserRightsParams(user['id'], "coordination"), false); 
     333                    menu.close(); 
     334                }; 
     335            } else { 
     336                menuItems[$T('Remove coordination rights')] = function() { 
     337                    self._manageUserList(self.methods["revokeRights"], self._getModifyUserRightsParams(user['id'], "coordination"), false); 
     338                    menu.close(); 
     339                }; 
     340            } 
     341 
     342            var menu = new PopupMenu(menuItems, [element], "popupList"); 
     343            var pos = element.getAbsolutePosition(); 
     344            menu.open(pos.x, pos.y + 20); 
     345            return false; 
     346        }); 
     347    } 
     348 
     349}, 
     350 
     351    function(confId, sessionId, inPlaceListElem, inPlaceMenu, userCaption) { 
     352        var self = this; 
     353    this.confId = confId; 
     354    this.sessionId = sessionId; 
     355    this.methods = {'addNew': 'session.conveners.addNewConvener', 
     356                    'addExisting': 'session.conveners.addExistingConvener', 
     357                    'remove': 'session.conveners.removeConvener', 
     358                    'edit': 'session.conveners.editConvenerData', 
     359                    'getUserData': 'session.conveners.getConvenerData', 
     360                    'getUserList': 'session.conveners.getConvenerList', 
     361                    'grantRights': 'session.conveners.grantRights', 
     362                    'revokeRights': 'session.conveners.revokeRights' 
     363    } 
     364 
     365    this.inPlaceMenu = inPlaceMenu; 
     366 
     367 
     368    // params: (confId, methods, userListParams, inPlaceListElem, showRemoveIcon, showEditIcon, showFavouritesIcon, showOrderArrows, 
     369    // kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation, showGrantCoordiantionCB) 
     370    this.ListOfUsersManager(confId, this.methods, {confId: confId, sessionId: this.sessionId}, inPlaceListElem, true, true, 
     371                            false, false, null, userCaption, "UIPerson", false, true, false, true); 
     372    } 
     373); 
  • indico/htdocs/sessionCreation.py

    rbdd862 raf424d9  
    3838    p.createSession( args ) 
    3939    return "done" 
    40  
    41 def convenerSearch( req, **params ): 
    42     return conferenceModif.RHNewSessionConvenerSearch( req ).process( params ) 
    43      
    44 def convenerNew( req, **params ): 
    45     return conferenceModif.RHNewSessionConvenerNew( req ).process( params ) 
    46      
    47 def personAdd( req, **params ): 
    48     return conferenceModif.RHNewSessionPersonAdd( req ).process( params ) 
    49      
  • indico/htdocs/sessionModification.py

    rbdd862 raf424d9  
    3131    return sessionModif.RHSessionDatesModification( req ).process( params ) 
    3232 
    33 def convenerSearch( req, **params ): 
    34     return sessionModif.RHSessionDataModificationConvenerSearch( req ).process( params ) 
    35      
    36 def convenerNew( req, **params ): 
    37     return sessionModif.RHSessionDataModificationConvenerNew( req ).process( params ) 
    38      
    39 def personAdd( req, **params ): 
    40     return sessionModif.RHSessionDataModificationPersonAdd( req ).process( params ) 
    41  
    42 def newConvenerSearch( req, **params ): 
    43     return sessionModif.RHSessionDataModificationNewConvenerSearch( req ).process( params )     
    44  
    45 def newConvenerCreate( req, **params ):     
    46     return sessionModif.RHSessionDataModificationNewConvenerCreate( req ).process( params )     
    47  
    48 def convenerAdd( req, **params ): 
    49     return sessionModif.RHSessionDataModificationConvenerAdd( req ).process( params ) 
    50  
    5133def close( req, **params ): 
    5234    return sessionModif.RHSessionClose( req ).process( params ) 
     
    5537    return sessionModif.RHSessionOpen( req ).process( params ) 
    5638 
    57 def newConvener(req,**params): 
    58     return sessionModif.RHConvenerNew( req ).process( params) 
    59  
    60 def remConveners(req, **args): 
    61     return sessionModif.RHConvenersRem( req ).process( args ) 
    62  
    63 def editConvener(req,**params): 
    64     return sessionModif.RHConvenerEdit( req ).process( params) 
    65  
    6639def addMaterial( req, **params ): 
    6740    return sessionModif.RHSessionAddMaterial( req ).process( params ) 
    68      
     41 
    6942def performAddMaterial( req, **params ): 
    7043    return sessionModif.RHSessionPerformAddMaterial( req ).process( params ) 
    71      
     44 
    7245def removeMaterials( req, **params ): 
    7346    return sessionModif.RHSessionRemoveMaterials( req ).process( params ) 
Note: See TracChangeset for help on using the changeset viewer.