"""
   MoinMoin - Subscribeuser - Action
   Subscribe an user to a page

   Author: Daniela Nicklas <nicklas@informatik.uni-stuttgart.de>
   (c) 2003, all rights reserved

   Designed for MoinMoin 1.1

"""

import string

from MoinMoin import wikiutil, webapi, config
from MoinMoin.formatter.text_html import Formatter

from MoinMoin.Page import Page
from MoinMoin.i18n import _
from MoinMoin.macro import autosub

def show_form(pagename, request):
    _ = request.getText
    webapi.http_headers(request)
    wikiutil.send_title(request, _("Subscribe User to %s"%pagename))

    request.write(
"""
<form action="%(baseurl)s/%(pagename)s" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="SubscribeUser">
Enter Username: <input type="text" name="users" size="50">
<input type="submit" value="Subscribe">
</form>
""" % {
        'baseurl': webapi.getBaseURL(), 
        'pagename': wikiutil.quoteWikiname(pagename),
        })
    wikiutil.send_footer(request, pagename, showpage=1)

def show_result(pagename, request):
    _ = request.getText
    webapi.http_headers(request)
    # send title
    p = Page(pagename)
    wikiutil.send_title(request, _("Subscribed for %s:"%pagename))
    # parse userlist and call macro
    username = []
    username.append(request.form['users'].value)
    result = autosub.subscribe_users(request, username, pagename)
    # print result
    request.write(result)
    wikiutil.send_footer(request, pagename, showpage=1)

def show_error(pagename, request):
    _ = request.getText
    p = Page(pagename)
    msg = _('''
<b>This wiki is not enabled for mail processing.<br>
Contact the owner of the wiki, who can either enable email,
or do not use the SubscribeUser action.</b>
''')
    p.send_page(request, msg)
    
def execute(pagename, request):
    _ = request.getText
    # check config
    if not config.mail_smarthost:
        show_error(pagename, request)
    elif not request.form.has_key('users'):
        show_form(pagename, request)
    else:
        show_result(pagename,request)



