Exemplo n.º 1
0
 def test_lockdata(self):
     from datetime import datetime
     from karl.utilities import lock
     past = datetime(1985, 1, 1, 0, 0, 1)
     now = datetime(1985, 1, 1, 0, 0, 10)
     context = karltesting.DummyModel()
     request = testing.DummyRequest()
     site = karltesting.DummyRoot()
     site['bar'] = context
     lock.lock(context, 'foo', past)
     lockdata = lock.lock_info_for_view(context, request, now)
     self.failUnless(lockdata['is_locked'])
Exemplo n.º 2
0
 def test_lockdata(self):
     from datetime import datetime
     from karl.utilities import lock
     past = datetime(1985, 1, 1, 0, 0, 1)
     now = datetime(1985, 1, 1, 0, 0, 10)
     context = karltesting.DummyModel()
     request = testing.DummyRequest()
     site = karltesting.DummyRoot()
     site['bar'] = context
     lock.lock(context, 'foo', past)
     lockdata = lock.lock_info_for_view(context, request, now)
     self.failUnless(lockdata['is_locked'])
Exemplo n.º 3
0
def show_wikipage_view(context, request):
    layout = request.layout_manager.layout
    is_front_page = (context.__name__ == 'front_page')
    if is_front_page:
        community = find_interface(context, ICommunity)
        layout.page_title = '%s Community Wiki Page' % community.title
        backto = False
    else:
        layout.page_title = context.title
        backto = {
            'href': resource_url(context.__parent__, request),
            'title': context.__parent__.title,
        }

    actions = []
    if has_permission('edit', context, request):
        actions.append(('Edit', resource_url(context, request, 'edit.html')))
    if has_permission('delete', context, request) and not is_front_page:
        actions.append(('Delete', resource_url(context, request,
                                               'delete.html')))
    repo = find_repo(context)
    show_trash = False
    if not find_interface(context, IIntranets):
        if repo is not None and has_permission('edit', context, request):
            actions.append(
                ('History', resource_url(context, request, 'history.html')))
            show_trash = True
    if has_permission('administer', context, request):
        actions.append(
            ('Advanced', resource_url(context, request, 'advanced.html')))

    api = TemplateAPI(context, request, layout.page_title)

    client_json_data = dict(tagbox=get_tags_client_data(context, request), )

    panel_data = layout.head_data['panel_data']
    panel_data['tagbox'] = client_json_data['tagbox']
    layout.add_portlet('recent_activity')

    wiki = find_interface(context, IWiki)
    feed_url = resource_url(wiki, request, "atom.xml")
    return dict(
        api=api,
        actions=actions,
        head_data=convert_to_script(client_json_data),
        feed_url=feed_url,
        backto=backto,
        is_front_page=is_front_page,
        show_trash=show_trash,
        lock_info=lock.lock_info_for_view(context, request),
    )
Exemplo n.º 4
0
def show_wikipage_view(context, request):
    layout = request.layout_manager.layout
    is_front_page = (context.__name__ == 'front_page')
    if is_front_page:
        community = find_interface(context, ICommunity)
        layout.page_title = '%s Community Wiki Page' % community.title
        backto = False
    else:
        layout.page_title = context.title
        backto = {
            'href': resource_url(context.__parent__, request),
            'title': context.__parent__.title,
            }

    actions = []
    if has_permission('edit', context, request):
        actions.append(('Edit', resource_url(context, request, 'edit.html')))
    if has_permission('delete', context, request) and not is_front_page:
        actions.append(('Delete', resource_url(context, request, 'delete.html')))
    repo = find_repo(context)
    show_trash = False
    if not find_interface(context, IIntranets):
        if repo is not None and has_permission('edit', context, request):
            actions.append(('History', resource_url(context, request, 'history.html')))
            show_trash = True
    if has_permission('administer', context, request):
        actions.append(('Advanced', resource_url(context, request, 'advanced.html')))

    api = TemplateAPI(context, request, layout.page_title)

    client_json_data = dict(
        tagbox = get_tags_client_data(context, request),
        )

    panel_data = layout.head_data['panel_data']
    panel_data['tagbox'] = client_json_data['tagbox']
    layout.add_portlet('recent_activity')

    wiki = find_interface(context, IWiki)
    feed_url = resource_url(wiki, request, "atom.xml")
    return dict(
        api=api,
        actions=actions,
        head_data=convert_to_script(client_json_data),
        feed_url=feed_url,
        backto=backto,
        is_front_page=is_front_page,
        show_trash=show_trash,
        lock_info=lock.lock_info_for_view(context, request),
        )
Exemplo n.º 5
0
def show_history(context, request, tz=None):
    repo = find_repo(context)
    profiles = find_profiles(context)

    # downloading files using ajax shows information bar in IE
    # We need to disable that if context is a file
    use_ajax = True
    preview_view = 'preview.html'
    if ICommunityFile.providedBy(context):
        use_ajax = False
        preview_view = 'download_preview'

    def display_record(record):
        editor = profiles[record.user]
        return {
            'date':
            format_local_date(record.archive_time, tz),
            'editor': {
                'name': editor.title,
                'url': resource_url(editor, request),
            },
            'preview_url':
            resource_url(context,
                         request,
                         preview_view,
                         query={'version_num': str(record.version_num)}),
            'restore_url':
            resource_url(context,
                         request,
                         'revert',
                         query={'version_num': str(record.version_num)}),
            'is_current':
            record.current_version == record.version_num,
        }

    # newest to oldest
    history = map(display_record, repo.history(context.docid))

    page_title = 'History for %s' % context.title

    backto = {'href': resource_url(context, request), 'title': context.title}

    return {
        'api': TemplateAPI(context, request, page_title),
        'history': history,
        'use_ajax': use_ajax,
        'backto': backto,
        'lock_info': lock_info_for_view(context, request),
    }
Exemplo n.º 6
0
    def __call__(self):
        if not lock.is_locked(self.context):
            lock.lock(self.context, self.userid)

        page_title = 'Edit %s' % self.context.title
        api = TemplateAPI(self.context, self.request, page_title)
        # prepare client data
        api.karl_client_data['text'] = dict(
                enable_wiki_plugin = True,
                enable_imagedrawer_upload = True,
                )
        return {'api':api,
                'actions':(),
                'lock_info':lock.lock_info_for_view(self.context, self.request),
                }
Exemplo n.º 7
0
    def __call__(self):
        if not lock.is_locked(self.context):
            lock.lock(self.context, self.userid)

        page_title = 'Edit %s' % self.context.title
        api = TemplateAPI(self.context, self.request, page_title)
        # prepare client data
        api.karl_client_data['text'] = dict(
            enable_wiki_plugin=True,
            enable_imagedrawer_upload=True,
        )
        return {
            'api': api,
            'actions': (),
            'lock_info': lock.lock_info_for_view(self.context, self.request),
        }
Exemplo n.º 8
0
def show_wikipage_view(context, request):

    is_front_page = (context.__name__ == 'front_page')
    if is_front_page:
        community = find_interface(context, ICommunity)
        page_title = '%s Community Wiki Page' % community.title
        backto = False
    else:
        page_title = context.title
        backto = {
            'href': model_url(context.__parent__, request),
            'title': context.__parent__.title,
            }

    actions = []
    if has_permission('edit', context, request):
        actions.append(('Edit', 'edit.html'))
    if has_permission('delete', context, request) and not is_front_page:
        actions.append(('Delete', 'delete.html'))
    repo = find_repo(context)
    if repo is not None and has_permission('edit', context, request):
        actions.append(('History', 'history.html'))
        show_trash = True
    else:
        show_trash = False
    if has_permission('administer', context, request):
        actions.append(('Advanced', 'advanced.html'))

    api = TemplateAPI(context, request, page_title)

    client_json_data = convert_to_script(dict(
        tagbox = get_tags_client_data(context, request),
        ))

    wiki = find_interface(context, IWiki)
    feed_url = model_url(wiki, request, "atom.xml")

    return dict(
        api=api,
        actions=actions,
        head_data=client_json_data,
        feed_url=feed_url,
        backto=backto,
        is_front_page=is_front_page,
        show_trash=show_trash,
        lock_info=lock.lock_info_for_view(context, request),
        )
Exemplo n.º 9
0
def show_history(context, request, tz=None):
    repo = find_repo(context)
    profiles = find_profiles(context)

    # downloading files using ajax shows information bar in IE
    # We need to disable that if context is a file
    use_ajax = True
    preview_view = 'preview.html'
    if ICommunityFile.providedBy(context):
        use_ajax = False
        preview_view = 'download_preview'

    def display_record(record):
        editor = profiles[record.user]
        return {
            'date': format_local_date(record.archive_time, tz),
            'editor': {
                'name': editor.title,
                'url': resource_url(editor, request),
                },
            'preview_url': resource_url(
                context, request, preview_view,
                query={'version_num': str(record.version_num)}),
            'restore_url': resource_url(
                context, request, 'revert',
                query={'version_num': str(record.version_num)}),
            'is_current': record.current_version == record.version_num,
        }

    # newest to oldest
    history = map(display_record, repo.history(context.docid))

    page_title = 'History for %s' % context.title

    backto = {
        'href': resource_url(context, request),
        'title': context.title
    }

    return {
        'api': TemplateAPI(context, request, page_title),
        'history': history,
        'use_ajax': use_ajax,
        'backto': backto,
        'lock_info': lock_info_for_view(context, request),
    }
Exemplo n.º 10
0
def show_wikitoc_view(context, request):

    is_front_page = (context.__name__ == 'front_page')
    if is_front_page:
        community = find_interface(context, ICommunity)
        page_title = '%s Community Wiki Page' % community.title
        backto = False
    else:
        page_title = context.title
        backto = {
            'href': resource_url(context.__parent__, request),
            'title': context.__parent__.title,
            }

    actions = []

    api = TemplateAPI(context, request, page_title)

    wikitoc_data = get_wikitoc_data(context, request)

    page_data = dict(
        wikitoc = wikitoc_data,
        )

    # ... for ux1
    client_json_data = convert_to_script(page_data)

    # ... for ux2
    request.layout_manager.layout.head_data['page_data'] = page_data

    wiki = find_interface(context, IWiki)
    feed_url = resource_url(wiki, request, "atom.xml")
    repo = find_repo(context)
    show_trash = repo is not None and has_permission('edit', context, request)

    return dict(api=api,
        actions=actions,
        head_data=client_json_data,
        feed_url=feed_url,
        backto=backto,
        lock_info=lock.lock_info_for_view(context, request),
        show_trash=show_trash,
        )
Exemplo n.º 11
0
def show_wikitoc_view(context, request):

    is_front_page = (context.__name__ == 'front_page')
    if is_front_page:
        community = find_interface(context, ICommunity)
        page_title = '%s Community Wiki Page' % community.title
        backto = False
    else:
        page_title = context.title
        backto = {
            'href': resource_url(context.__parent__, request),
            'title': context.__parent__.title,
        }

    actions = []

    api = TemplateAPI(context, request, page_title)

    wikitoc_data = get_wikitoc_data(context, request)

    page_data = dict(wikitoc=wikitoc_data, )

    # ... for ux1
    client_json_data = convert_to_script(page_data)

    # ... for ux2
    request.layout_manager.layout.head_data['page_data'] = page_data

    wiki = find_interface(context, IWiki)
    feed_url = resource_url(wiki, request, "atom.xml")
    repo = find_repo(context)
    show_trash = repo is not None and has_permission('edit', context, request)

    return dict(
        api=api,
        actions=actions,
        head_data=client_json_data,
        feed_url=feed_url,
        backto=backto,
        lock_info=lock.lock_info_for_view(context, request),
        show_trash=show_trash,
    )
Exemplo n.º 12
0
    def __call__(self):
        if not lock.is_locked(self.context):
            lock.lock(self.context, self.userid)

        page_title = 'Edit %s' % self.context.title
        api = TemplateAPI(self.context, self.request, page_title)
        # prepare client data
        # ux1
        api.karl_client_data['text'] = dict(
                enable_wiki_plugin = True,
                enable_imagedrawer_upload = True,
                )
        # ux2
        layout = self.request.layout_manager.layout
        layout.head_data['panel_data']['tinymce'] = api.karl_client_data['text']

        return {'api':api,
                'actions':(),
                'lock_info':lock.lock_info_for_view(self.context, self.request),
                }
Exemplo n.º 13
0
def show_history(context, request):
    repo = find_repo(context)
    profiles = find_profiles(context)

    def display_record(record):
        editor = profiles[record.user]
        return {
            'date': format_local_date(record.archive_time),
            'editor': {
                'name': editor.title,
                'url': model_url(editor, request),
                },
            'preview_url': model_url(
                context, request, 'preview.html',
                query={'version_num': str(record.version_num)}),
            'restore_url': model_url(
                context, request, 'revert',
                query={'version_num': str(record.version_num)}),
            'is_current': record.current_version == record.version_num,
        }

    try:
        history = repo.history(context.docid)
    except:
        history = []
    history = map(display_record, history)
    history.reverse()

    page_title = 'History for %s' % context.title

    backto = {
        'href': model_url(context, request),
        'title': context.title
    }

    return {
        'api': TemplateAPI(context, request, page_title),
        'history': history,
        'backto': backto,
        'lock_info': lock_info_for_view(context, request),
    }
Exemplo n.º 14
0
    def __call__(self):
        if not lock.is_locked(self.context):
            lock.lock(self.context, self.userid)

        page_title = 'Edit %s' % self.context.title
        api = TemplateAPI(self.context, self.request, page_title)
        # prepare client data
        # ux1
        api.karl_client_data['text'] = dict(
            enable_wiki_plugin=True,
            enable_imagedrawer_upload=True,
        )
        # ux2
        layout = self.request.layout_manager.layout
        layout.head_data['panel_data']['tinymce'] = api.karl_client_data[
            'text']

        return {
            'api': api,
            'actions': (),
            'lock_info': lock.lock_info_for_view(self.context, self.request),
        }