Example #1
0
    def mark_book_internal_links(self, html):
        book = IBook(self.context)
        book_url = book.absolute_url()
        book_path = '/'.join(book.getPhysicalPath())
        context_url = self.context.absolute_url()

        doc = lxml.html.parse(StringIO(html))
        for node in doc.xpath('//a'):
            if 'href' not in node.attrib:
                continue

            url = self.resolve_uid(node.attrib['href'])
            if url == context_url:
                continue

            path = url.replace(book_url, book_path)
            uid = self.get_uid_by_path(path)
            if uid is None:
                continue

            if 'class' in node.attrib:
                node.attrib['class'] += ' book-internal'
            else:
                node.attrib['class'] = 'book-internal'

            node.attrib['data-uid'] = uid

        return lxml.html.tostring(doc)
Example #2
0
def get_latex_heading(context, layout, toc=None):
    title = layout.get_converter().convert(context.pretty_title_or_id())

    # level: depth of rendering
    level = -1
    max_level = len(HEADING_COMMANDS) - 1

    obj = context
    while obj and not IBook.providedBy(obj) and level != max_level:
        obj = aq_parent(aq_inner(obj))
        level += 1

        if INavigationRoot.providedBy(obj):
            # cancel, use section
            level = 1
            break

    command = HEADING_COMMANDS[level]

    hide_from_toc_field = context.Schema().getField('hideFromTOC')
    hide_from_toc = hide_from_toc_field and hide_from_toc_field.get(context)

    # generate latex
    tocmark = ''

    if toc is None and hide_from_toc is True or toc is False:
        tocmark = '*'

    latex = '\\%s%s{%s}\n' % (command, tocmark, title)

    return latex
Example #3
0
def get_latex_heading(context, layout, toc=None):
    title = layout.get_converter().convert(context.pretty_title_or_id())

    # level: depth of rendering
    level = -1
    max_level = len(HEADING_COMMANDS) - 1

    obj = context
    while obj and not IBook.providedBy(obj) and level != max_level:
        obj = aq_parent(aq_inner(obj))
        level += 1

        if INavigationRoot.providedBy(obj):
            # cancel, use section
            level = 1
            break

    command = HEADING_COMMANDS[level]

    hide_from_toc_field = context.Schema().getField('hideFromTOC')
    hide_from_toc = hide_from_toc_field and hide_from_toc_field.get(context)

    # generate latex
    tocmark = ''

    if toc is None and hide_from_toc is True or toc is False:
        tocmark = '*'

    latex = '\\%s%s{%s}\n' % (
        command,
        tocmark,
        title)

    return latex
Example #4
0
def get_latex_heading(context, layout, toc=True):
    title = layout.get_converter().convert(context.pretty_title_or_id())

    # level: depth of rendering
    level = -1
    max_level = len(HEADING_COMMANDS) - 1

    obj = context
    while obj and not IBook.providedBy(obj) and level != max_level:
        obj = aq_parent(aq_inner(obj))
        level += 1

        if INavigationRoot.providedBy(obj):
            # cancel, use section
            level = 1
            break

    command = HEADING_COMMANDS[level]

    # generate latex
    tocmark = ''
    if not toc:
        tocmark = '*'

    latex = '\%s%s{%s}\n' % (
        command,
        tocmark,
        title)

    return latex
Example #5
0
    def get_parent_book(self):
        context = self.context

        while context and not ISiteRoot.providedBy(context):
            if IBook.providedBy(context):
                return context
            context = aq_parent(aq_inner(context))

        return None
Example #6
0
    def get_parent_book(self):
        context = self.context

        while context and not ISiteRoot.providedBy(context):
            if IBook.providedBy(context):
                return context
            context = aq_parent(aq_inner(context))

        return None
Example #7
0
    def is_first_level_chapter(self,context):
        """Check if the context is Chapter in the first level of book
        """
        #If the context is None or it is not a chpater
        if context == None or not IChapter.providedBy(context): return False

        par = aq_parent(aq_inner(context))
        if par and IBook.providedBy(par): return True
        return False
Example #8
0
    def _get_hierarchy_titles(self, obj):
        """ Get all titles in the hierarchy in a list: ['first', 'second']
        """
        titles = []
        parent = obj
        while not IPloneSiteRoot.providedBy(parent):
            titles.insert(0, parent.Title())
            if IBook.providedBy(parent):
                break
            else:
                parent = aq_parent(aq_inner(parent))

        return titles
Example #9
0
    def _get_hierarchy_titles(self, obj):
        """ Get all titles in the hierarchy in a list: ['first', 'second']
        """
        titles = []
        parent = obj
        while not IPloneSiteRoot.providedBy(parent):
            titles.insert(0, parent.Title())
            if IBook.providedBy(parent):
                break
            else:
                parent = aq_parent(aq_inner(parent))

        return titles
Example #10
0
    def get_book(self):
        obj = self.context

        while obj is not None:
            if IBook.providedBy(obj):
                return obj

            elif IPloneSiteRoot.providedBy(obj):
                return None

            else:
                obj = aq_parent(aq_inner(obj))

        return None
Example #11
0
    def get_book_obj(self):
        obj = self.context

        while obj is not None:
            if IBook.providedBy(obj):
                return obj

            elif IPloneSiteRoot.providedBy(obj):
                raise Exception('Could not find book.')

            else:
                obj = aq_parent(aq_inner(obj))

        raise Exception('Could not find book.')
Example #12
0
    def get_book(self):
        obj = self.context

        while obj is not None:
            if IBook.providedBy(obj):
                return obj

            elif IPloneSiteRoot.providedBy(obj):
                return None

            else:
                obj = aq_parent(aq_inner(obj))

        return None
Example #13
0
    def get_book_obj(self):
        obj = self.context

        while obj is not None:
            if IBook.providedBy(obj):
                return obj

            elif IPloneSiteRoot.providedBy(obj):
                raise Exception('Could not find book.')

            else:
                obj = aq_parent(aq_inner(obj))

        raise Exception('Could not find book.')
Example #14
0
    def get_chapter_level(self, obj):
        """ Return the chapterlevel in a list
        of int
        """
        chapter_level = []
        parent = obj

        while not IPloneSiteRoot.providedBy(parent):
            if IBook.providedBy(parent):
                break
            else:
                chapter_level.insert(
                    0, self._get_filtered_folder_position(parent))
                parent = aq_parent(aq_inner(parent))

        return chapter_level
Example #15
0
    def get_chapter_level(self, obj):
        """ Return the chapterlevel in a list
        of int
        """
        chapter_level = []
        parent = obj

        while not IPloneSiteRoot.providedBy(parent):
            if IBook.providedBy(parent):
                break
            else:
                chapter_level.insert(
                    0, self._get_filtered_folder_position(parent))
                parent = aq_parent(aq_inner(parent))

        return chapter_level
Example #16
0
 def get_book(self):
     obj = self.context
     while obj and not IBook.providedBy(obj):
         obj = aq_parent(aq_inner(obj))
     return obj
Example #17
0
 def test_on_file(self):
     chapter = create(Builder('chapter').within(self.book))
     block = create(Builder('file').within(chapter))
     self.assertEquals(self.book, IBook(block))
Example #18
0
 def test_on_text_block(self):
     chapter = create(Builder('chapter').within(self.book))
     block = create(Builder('book textblock').within(chapter))
     self.assertEquals(self.book, IBook(block))
Example #19
0
 def test_on_chapter(self):
     chapter = create(Builder('chapter').within(self.book))
     self.assertEquals(self.book, IBook(chapter))
Example #20
0
 def test_on_book(self):
     self.assertEquals(self.book, IBook(self.book))
Example #21
0
 def get_book(self):
     obj = self.context
     while obj and not IBook.providedBy(obj):
         obj = aq_parent(aq_inner(obj))
     return obj