# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - Subscribers action
    
    Displays all users subcribed to the page the actions was called from

    @copyright: 2003 by Daniela Nicklas

    @copyright: 2007 by Oliver Siemoneit
    @license: GNU GPL, see COPYING for details.

"""

from MoinMoin.Page import Page

def execute(pagename, request):
    _ = request.getText
    request.emit_http_headers()
    request.theme.send_title(_("Subscribers for %s") % pagename, pagename=pagename)

    # show subscribers
    request.write('<strong>', _('The following users subscribed to this page:'), '</strong><ul>')
    page = Page(request, pagename)
    users = page.getSubscribers(request, include_self=1, return_users=1)
    if users:
        for lang in users.keys():
            for user in users[lang]:
                request.write('<li>[%s] ' % lang)
                userhomepage = Page(request, user.name)
                if userhomepage.exists():
                    request.write(userhomepage.link_to(request))
                else:
                    request.write(user.name)
                mail = '%s%s%s' % (request.formatter.url(1, 'mailto:%s?subject=%s'%(user.email, pagename), css='mailto', do_escape=0),
                                   request.formatter.text(user.email),
                                   request.formatter.url(0))
                request.write(', %s ' % mail)
                
        request.write('</ul>')

        # generate "mail to all" - link
        subscribers = page.getSubscribers(request,  include_self=1, return_users=0)
        allsubs = ''
        if subscribers:
            for subscriber in subscribers.values():
                for email in subscriber:
                    allsubs += '%s, '%email
                    
            if allsubs:
                mailtoall = '%s%s%s' % (request.formatter.url(1, 'mailto:%s?subject=%s'%(allsubs, pagename), css='mailto', do_escape=0),
                                        request.formatter.text(_('Mail to all')),
                                        request.formatter.url(0))
                request.write(mailtoall)
    else:
        request.write(_('[No subscriptions yet]') + '</ul>')
            
    request.theme.send_footer(pagename)
    return
