def login(self,userName,subject): """ A user connects to the chat room. """ # Generate unique userID chars = string.letters + string.digits userID = ''.join([choice(chars) for i in range(10)]) self.core.setStateVar("helpdesk-userID",userID) self.core.setStateVar("helpdesk-lastMsgFrom",'') self.core.focus("#jabberHelpdeskMsgInput") try: agent=self.mh.userLogin(self.botJid,userID,userName,subject) vCard = self.mh.getAgentVCard(self.botJid,userID) self.core.setStateVar("helpdesk-lastMsgFrom",'') self.core.setStateVar("helpdesk-agent",agent) self.plonekss.issuePortalMessage( _(u"You are connected to the helpdesk. " \ "Someone will be with you shortly."),'info') vCardElem = self.core.getHtmlIdSelector("jabberHelpdeskAgentDetails") vCardDetails='<img id="agentAvatar" src="%s/helpdesk_avatar?userID=%s"/>'%(aq_inner(self.context).absolute_url(),userID) if vCard['FN'] or vCard['DESC']: vCardDetails += "<label>"+_(u"Talking with: ")+"</label>"+'<span id="jabberHelpdeskAgentDesc">'+vCard['FN']+" "+vCard['DESC']+"</span>" self.core.insertHTMLAsLastChild(vCardElem, vCardDetails) except Exception,Detail: return self._connectionError(Detail)
def action_submit(self, action, data): """ """ context = aq_inner(self.context) subject = data['subject'] if not data.has_key('name'): name = self.memberName else: name = data['name'] try: if self.mh.loadBot(context.botJid, context.botPassword, context.persistent): if self.availableAgents()[0]: return self.request.response.redirect( '@@chatView?name=%s&subject=%s'%(name,subject)) else: IStatusMessage(self.request).addStatusMessage( _(u"No available agents."), type='error') else: IStatusMessage(self.request).addStatusMessage( _(u"Could not connect to helpdesk server"), type='error') logger.error( "Could not connect to bot:%s"%self.context.botJid) except: IStatusMessage(self.request).addStatusMessage( _(u"Could not connect to helpdesk server"), type='error') logger.error("Could not connect to bot:%s"%self.context.botJid)
def title(self): return _(u"Helpdesk portlet")
def _connectionError(self,Detail): """ """ self.plonekss.issuePortalMessage(_("Connection error"),'error') return self.render()
import md5 from zope.interface import implements from zope.component.factory import Factory from plone.app.content.interfaces import INameFromTitle from plone.app.content.item import Item from qi.jabberHelpdesk.interfaces import IHelpdesk from qi.jabberHelpdesk import HelpdeskMessageFactory as _ class Helpdesk(Item): implements(IHelpdesk, INameFromTitle) portal_type="Jabber Helpdesk" title=u"" description = u"" botJid = u"" botPassword = u"" persistent = False def __init__(self,id=None): super(Helpdesk,self).__init__(id) def passwordHash(self): """Returns a hash for the bot's password. """ return md5.new(self.botPassword).hexdigest() helpdeskFactory = Factory(Helpdesk, title=_(u"Create a new jabber helpdesk"))