view data/plugin/action/InstallLanguage.py @ 386:2987a4ef997a

action InstallLanguage: The superuser gets a table of language packs dependent on the selected language for installation.
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Fri, 24 Jul 2009 12:32:19 +0200
parents
children 9b68e1090065
line wrap: on
line source
# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - InstallLanguage

    The superuser gets a table of language packs dependent on the selected language
    for installation.

    @copyright: 2009 MoinMoin:ReimarBauer,
                     MoinMoin:ThomasWaldmnann

    @license: GNU GPL, see COPYING for details.
"""

from MoinMoin import i18n
from MoinMoin.i18n import strings
i18n.strings = strings

from MoinMoin.action import AttachFile

from MoinMoin.Page import Page
from MoinMoin.util.dataset import TupleDataset, Column
from MoinMoin.widget.browser import DataBrowserWidget

def execute(pagename, request):
    if not request.user or not request.user.isSuperUser():
        return ''
    _ = request.getText
    fmt = request.html_formatter
    language_setup_page = 'LanguageSetup'
    not_translated_system_pages = 'not_translated_system_pages.zip'
    files = AttachFile._get_files(request, language_setup_page)
    wiki_languages = list(set([lang_file.split('_')[0] for lang_file in files]) - set(['00']))
    wiki_languages.sort()
    lang_default = 'English'
    lang = request.values.get('language') or lang_default

    data = TupleDataset()
    data.columns = [
           Column('page package', label=_('page package')),
           Column('action', label=_('install')),
        ]

    label_install = _("install")
    for pageset_name in i18n.strings.pagesets:
        attachment = "%s_%s.zip" % (lang, pageset_name)
        if attachment.endswith(not_translated_system_pages):
            attachment = 'English_not_translated_system_pages.zip'
        install_link = ''
        if AttachFile.exists(request, language_setup_page, attachment):
            install_link = (fmt.url(1, AttachFile.getAttachUrl(language_setup_page, attachment, request, do='install')) + 
                            fmt.text(label_install) +
                            fmt.url(0))
        data.addRow((pageset_name, install_link))

    table = DataBrowserWidget(request)
    table.setData(data)
    page_table = ''.join(table.format(method='GET'))

    fmt = request.formatter
    this_page = Page(request, pagename)
    lang_links = [this_page.link_to_raw(request, _lang,
                                        querystr={'action': 'InstallLanguage',
                                                  'language': _lang,
                                                  'pageset': pageset_name, })
                  for _lang in wiki_languages]

    lang_selector = u''.join([fmt.paragraph(1), _("Choose:"), ' ', ' '.join(lang_links), fmt.paragraph(0)])
    title = _("Install language packs for '%s'") % (lang)

    request.theme.send_title(title, page=request.page, pagename=pagename)
    request.write(request.formatter.startContent("content"))
    request.write(lang_selector)
    request.write(page_table)
    request.write(request.formatter.endContent())
    request.theme.send_footer(pagename)
    request.theme.send_closing_html()