def __init__(self, password_reset_id, users):
     Span.__init__(
         self,
         H3(u"complete your password reset"),
         P("""
     Below is a list of Luminotes users matching your email address. You can reset
     the passwords of any of these users. If you just needed a username reminder and
     you already know your password, then click the login link above without performing
     a password reset.
     """),
         Form(
             [
                 Span(
                     P(
                         Div(Strong(u"%s: new password" % user.username)),
                         Input(type=u"password",
                               name=user.object_id,
                               size=30,
                               maxlength=30,
                               class_=u"text_field"),
                     ),
                     P(
                         Div(
                             Strong(u"%s: new password (again)" %
                                    user.username)),
                         Input(type=u"password",
                               name=user.object_id,
                               size=30,
                               maxlength=30,
                               class_=u"text_field"),
                     ),
                 ) for user in users
             ],
             P(
                 Input(type=u"hidden",
                       id=u"password_reset_id",
                       name=u"password_reset_id",
                       value=password_reset_id),
                 Input(type=u"submit",
                       name=u"reset_button",
                       id=u"reset_button",
                       class_=u"button",
                       value=(len(users) > 1) and u"reset passwords"
                       or u"reset password"),
             ),
             id="reset_form",
             target="/users/reset_password",
         ),
         P(
             Strong(u"tip:"),
             u"""
     When you submit this form, you'll be redirected to the front page where you can login with
     your new password.
     """,
         ),
     )
Exemple #2
0
        def note_controls(note, read_write):
            read_write_access = ( read_write == Notebook.READ_WRITE ) or \
              ( read_write == Notebook.READ_WRITE_FOR_OWN_NOTES and note.user_id == user.object_id )

            return Div(
              read_write_access and Input(
                type = "button",
                class_ = "note_button",
                id = "delete_note_%s" % note.object_id,
                value = "delete" + ( note.deleted_from_id and " forever" or "" ),
                title = "delete note [ctrl-d]"
              ) or None,
              read_write_access and note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "undelete_note_%s" % note.object_id,
                value = "undelete",
                title = "undelete note"
              ) or None,
              ( read_write == Notebook.READ_WRITE ) and not note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "changes_note_%s" % note.object_id,
                value = "changes",
                title = "previous revisions",
              ) or None,
              ( read_write == Notebook.READ_WRITE ) and not note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "tools_note_%s" % note.object_id,
                value = "tools",
                title = "note tools",
              ) or None,
              ( read_write != Notebook.READ_ONLY or not note.startup ) and not note.deleted_from_id and \
                ( read_write != Notebook.READ_WRITE_FOR_OWN_NOTES ) and Input(
                type = "button",
                class_ = "note_button",
                id = "hide_note_%s" % note.object_id,
                value = "hide",
                title = "hide note [ctrl-h]",
              ) or None,
              id = u"note_controls_%s" % note.object_id,
              class_ = u"note_controls",
            )
Exemple #3
0
  def __init__( self ):
    title = None

    Form.__init__(
      self,
      Input(
        type = u"text", name = u"search_text", id = u"search_text",
        maxlength = 512, value = "search",
        autocomplete = u"off",
      ),
      id = u"search_form",
    )
    def __init__(self, notebook, root_notes, recent_notes, total_notes_count,
                 user):
        tags = [tag for tag in notebook.tags if tag.name == u"forum"]

        if tags:
            forum_name = tags[0].value
            forum_tag = True
        else:
            forum_name = None
            forum_tag = False

        Div.__init__(
            self,
            Div(
                Div(
                    Search_form(),
                    class_=u"link_area_item",
                ),
                H4(
                    forum_tag and u"posts" or u"notes",
                    Span(
                        Span(total_notes_count, id=u"total_notes_count"),
                        u"total",
                        class_=u"small_text link_area_item",
                    ),
                    notebook.read_write != Notebook.READ_ONLY and Input(
                        type=u"button",
                        class_=u"note_button small_text",
                        id=u"save_button",
                        value=u"saved",
                        disabled=u"true",
                        title=u"save your work",
                    ) or None,
                    id=u"note_tree_area_title",
                ) or None,
                (not forum_tag) and self.make_tree(
                    [
                        self.make_item(
                            title=note.title,
                            link_attributes=u'href="/notebooks/%s?note_id=%s"'
                            % (notebook.object_id, note.object_id),
                            link_class=u"note_tree_link",
                            has_children=(notebook.name != u"trash") and
                            self.LINK_PATTERN.search(note.contents) or False,
                            root_note_id=note.object_id,
                        ) for note in root_notes
                    ],
                    Tr(
                        Td(),
                        (notebook.name != u"trash" and notebook.read_write
                         == Notebook.READ_WRITE) and Td(
                             Input(
                                 type=u"button",
                                 class_=u"note_button",
                                 id=u"new_note_tree_link_button",
                                 value=u"+ note link",
                                 title=u"Add one of your notes to this list.",
                             ),
                             Span(id=u"new_note_tree_link_area"),
                         ) or None,
                        id=u"new_note_tree_link_row",
                    ) or None,
                    tree_id="note_tree_root_table",
                ) or None,
                (not forum_tag and recent_notes is not None
                 and notebook.name != u"trash") and Span(
                     H4(
                         u"recent updates",
                         id=u"recent_notes_area_title",
                     ),
                     self.make_tree(
                         Tr(id="recent_notes_top"),
                         [
                             self.make_item(
                                 title=note.title,
                                 link_attributes=
                                 u'href="/notebooks/%s?note_id=%s"' %
                                 (notebook.object_id, note.object_id),
                                 link_class=u"recent_note_link",
                                 has_children=False,
                                 root_note_id=note.object_id,
                                 base_name=u"recent_note",
                             ) for note in recent_notes
                         ],
                         navigation=Tbody(
                             Tr(id="recent_notes_spacer"),
                             Tr(
                                 Td(),
                                 Td(
                                     A(u"more",
                                       href=u"#",
                                       id=u"recent_notes_more_link",
                                       class_=u"undisplayed"),
                                     A(u"less",
                                       href=u"#",
                                       id=u"recent_notes_less_link",
                                       class_=u"undisplayed"),
                                 ),
                             ),
                             id=u"recent_notes_navigation"),
                         tree_id="recent_notes_table",
                     ),
                 ) or None,
                (user.username is None) and P(
                    A(u"Download", href=u"/download", class_=u"hook_action"),
                    Span(u" or ", class_=u"hook_action_or"),
                    A(u"Sign up", href=u"/pricing", class_=u"hook_action"),
                    Br(),
                    Span("Get started in seconds.",
                         class_=u"hook_action_detail"),
                    class_=u"hook_action_area",
                    separator=u"",
                ) or None,
                id=u"note_tree_area_holder",
            ),
            Span(id="tree_arrow_hover_preload"),
            Span(id="tree_arrow_down_preload"),
            Span(id="tree_arrow_down_hover_preload"),
            id=u"note_tree_area",
        )
Exemple #5
0
  def __init__( self, notebook, hide_toolbar = False, note_word = None ):
    Div.__init__(
      self,
      Div(
        P(
          Div( Input(
            type = u"button",
            id = u"newNote", title = u"make a new %s [ctrl-M]" % ( note_word or u"note" ),
            class_ = "image_button newNote_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"createLink", title = u"link [ctrl-L]",
            class_ = "image_button createLink_large",
          ), class_ = u"button_background" ),
          # Notebook.READ_WRITE_FOR_OWN_NOTES should not have a file upload button
          ( notebook.read_write == Notebook.READ_WRITE ) and Div( Input(
            type = u"button",
            id = u"attachFile", title = u"attach file or image",
            class_ = "image_button attachFile_large",
          ), class_ = u"button_background" ) or None,
        ),
        P(
          Div( Input(
            type = u"button",
            id = u"bold", title = u"bold [ctrl-B]",
            class_ = "image_button bold_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"italic", title = u"italic [ctrl-I]",
            class_ = "image_button italic_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"underline", title = u"underline [ctrl-U]",
            class_ = "image_button underline_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"strikethrough", title = u"strikethrough [ctrl-S]",
            class_ = "image_button strikethrough_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"color", title = u"text color",
            class_ = "image_button color_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"font", title = u"font",
            class_ = "image_button font_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"title", title = u"title",
            class_ = "image_button title_large",
          ), class_ = u"button_background" ),
        ),
        P(
          Div( Input(
            type = u"button",
            id = u"insertUnorderedList", title = u"bullet list [ctrl-period]",
            class_ = "image_button insertUnorderedList_large",
          ), class_ = u"button_background" ),
          Div( Input(
            type = u"button",
            id = u"insertOrderedList", title = u"numbered list [ctrl-1]",
            class_ = "image_button insertOrderedList_large",
          ), class_ = u"button_background" ),
        ),
        class_ = u"button_wrapper",
      ),

      id = u"toolbar",
      class_ = hide_toolbar and u"undisplayed" or None,
    )
Exemple #6
0
    def __init__(
        self,
        user,
        rate_plan,
        notebooks,
        notebook,
        parent_id=None,
        login_url=None,
        logout_url=None,
        startup_notes=None,
        total_notes_count=None,
        notes=None,
        note_read_write=True,
        start=None,
        count=None,
        http_url=None,
        conversion=None,
        rename=False,
        deleted_id=None,
        invites=None,
        invite_id=None,
        after_login=None,
        signup_plan=None,
        signup_yearly=None,
        recent_notes=None,
        groups=None,
    ):
        startup_note_ids = [
            startup_note.object_id for startup_note in startup_notes
        ]

        def note_controls(note, read_write):
            read_write_access = ( read_write == Notebook.READ_WRITE ) or \
              ( read_write == Notebook.READ_WRITE_FOR_OWN_NOTES and note.user_id == user.object_id )

            return Div(
              read_write_access and Input(
                type = "button",
                class_ = "note_button",
                id = "delete_note_%s" % note.object_id,
                value = "delete" + ( note.deleted_from_id and " forever" or "" ),
                title = "delete note [ctrl-d]"
              ) or None,
              read_write_access and note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "undelete_note_%s" % note.object_id,
                value = "undelete",
                title = "undelete note"
              ) or None,
              ( read_write == Notebook.READ_WRITE ) and not note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "changes_note_%s" % note.object_id,
                value = "changes",
                title = "previous revisions",
              ) or None,
              ( read_write == Notebook.READ_WRITE ) and not note.deleted_from_id and Input(
                type = "button",
                class_ = "note_button",
                id = "tools_note_%s" % note.object_id,
                value = "tools",
                title = "note tools",
              ) or None,
              ( read_write != Notebook.READ_ONLY or not note.startup ) and not note.deleted_from_id and \
                ( read_write != Notebook.READ_WRITE_FOR_OWN_NOTES ) and Input(
                type = "button",
                class_ = "note_button",
                id = "hide_note_%s" % note.object_id,
                value = "hide",
                title = "hide note [ctrl-h]",
              ) or None,
              id = u"note_controls_%s" % note.object_id,
              class_ = u"note_controls",
            )

        def static_note_divs(notes, read_write):
            return [
                Table(
                    Tr(Td(note_controls(note, read_write), )),
                    Tr(
                        Td(
                            Div(
                                Span(
                                    note.contents,
                                    class_=u"static_note_contents",
                                    separator="",
                                ),
                                id="static_note_%s" % note.object_id,
                                class_=u"static_note_div",
                            ),
                            width="100%",
                        ),
                        Td(
                            u".....",
                            id=u"note_grabber_%s" % note.object_id,
                            class_=u"note_grabber" +
                            (read_write != Notebook.READ_WRITE and " invisible"
                             or ""),
                        ),
                    ),
                    Tr(
                        Td(
                            Div(class_="note_shadow_corner"),
                            id=u"note_shadow_%s" % note.object_id,
                            class_=u"note_shadow undisplayed",
                        ), ),
                    id=u"note_holder_%s" % note.object_id,
                    class_=u"note_holder",
                ) for note in notes
            ]

        static_notes = notes and static_note_divs( notes, note_read_write and notebook.read_write or Notebook.READ_ONLY ) or \
                       static_note_divs( startup_notes, notebook.read_write )

        # Since the contents of these notes are included in the static_notes section below, don't
        # include them again in the hidden fields here. Accomplish this by making custom dicts for
        # sending to the client.
        startup_note_dicts = [{
            u"object_id": startup_note.object_id,
            u"revision": startup_note.revision,
            u"deleted_from_id": startup_note.deleted_from_id,
            u"user_id": startup_note.user_id,
            u"username": startup_note.username,
        } for startup_note in startup_notes]

        note_dicts = [{
            u"object_id": note.object_id,
            u"revision": note.revision,
            u"deleted_from_id": note.deleted_from_id,
            u"user_id": note.user_id,
            u"username": note.username,
            u"creation": note.creation,
        } for note in notes]

        root_notes = startup_notes + (notes and [
            note for note in notes if note.object_id not in startup_note_ids
        ] or [])

        def json(string):
            return escape(unicode(Json(string)), quote=True)

        if len(notes) == 1:
            title = notes[0].title
        else:
            title = notebook.name

        if rate_plan.get(u"notebook_sharing"):
            updates_path = u"/notebooks/updates/%s?rss&%s" % (
                notebook.object_id,
                urlencode([(u"notebook_name", notebook.name.encode("utf8"))]),
            )
        else:
            updates_path = None

        forum_tags = [tag for tag in notebook.tags if tag.name == u"forum"]
        forum_tag = None

        if notebook.name == u"Luminotes":
            notebook_path = u"/"
            updates_path = None  # no RSS feed for the main notebook
        elif notebook.name == u"Luminotes user guide":
            notebook_path = u"/guide"
        elif forum_tags:
            forum_tag = forum_tags[0]
            if forum_tag.value == u"blog":
                notebook_path = u"/blog/%s" % notebook.friendly_id
            else:
                notebook_path = u"/forums/%s/%s" % (forum_tag.value,
                                                    notebook.object_id)
        else:
            notebook_path = u"/notebooks/%s" % notebook.object_id

        conversion_js = None

        if conversion:
            try:
                conversion_js = file(u"static/js/%s_conversion.js" %
                                     conversion).read()
            except IOError:
                pass

        if notebook.read_write == Notebook.READ_WRITE:
            header_note_title = u"wiki"
        else:
            all_notes = startup_notes + notes
            header_note_title = (
                notebook.name == "Luminotes"
            ) and all_notes and all_notes[0].title or notebook.name
            header_note_title = {
                "contact info": "contact",
                "meet the team": "team",
                "Luminotes user guide": "guide",
                "Luminotes privacy policy": "privacy",
            }.get(header_note_title, header_note_title)

        own_notebooks = [
            nb for nb in notebooks if nb.read_write == Notebook.READ_WRITE
        ]
        header_notebook = own_notebooks and own_notebooks[0] or notebook

        Page.__init__(
          self,
          title,
          Link( rel = u"stylesheet", type = u"text/css", href = u"/static/css/header.css?%s" % VERSION ),
          updates_path and \
            Link( rel = u"alternate", type = u"application/rss+xml", title = notebook.name, href = updates_path ) or None,
          Script( type = u"text/javascript", src = u"/static/js/MochiKit.js?%s" % VERSION ) or None,
          Script( type = u"text/javascript", src = u"/static/js/Invoker.js?%s" % VERSION ) or None,
          Script( type = u"text/javascript", src = u"/static/js/Editor.js?%s" % VERSION ) or None,
          Script( type = u"text/javascript", src = u"/static/js/Wiki.js?%s" % VERSION ) or None,
          Input( type = u"hidden", name = u"user", id = u"user", value = json( user ) ),
          Input( type = u"hidden", name = u"rate_plan", id = u"rate_plan", value = json( rate_plan ) ),
          Input( type = u"hidden", name = u"yearly", id = u"yearly", value = json( signup_yearly ) ),
          Input( type = u"hidden", name = u"notebooks", id = u"notebooks", value = json( notebooks ) ),
          Input( type = u"hidden", name = u"notebook", id = u"notebook", value = json( notebook ) ),
          Input( type = u"hidden", name = u"parent_id", id = u"parent_id", value = parent_id or "" ),
          Input( type = u"hidden", name = u"startup_notes", id = u"startup_notes", value = json( startup_note_dicts ) ),
          Input( type = u"hidden", name = u"current_notes", id = u"current_notes", value = json( note_dicts ) ),
          Input( type = u"hidden", name = u"note_read_write", id = u"note_read_write", value = json( note_read_write ) ),
          Input( type = u"hidden", name = u"rename", id = u"rename", value = json( rename ) ),
          Input( type = u"hidden", name = u"deleted_id", id = u"deleted_id", value = deleted_id ),
          Input( type = u"hidden", name = u"invites", id = u"invites", value = json( invites ) ),
          Input( type = u"hidden", name = u"invite_id", id = u"invite_id", value = invite_id ),
          Input( type = u"hidden", name = u"after_login", id = u"after_login", value = after_login ),
          Input( type = u"hidden", name = u"signup_plan", id = u"signup_plan", value = signup_plan ),
          Input( type = u"hidden", name = u"groups", id = u"groups", value = json( groups ) ),
          Div(
            id = u"status_area",
          ),
          Header( user, header_notebook, login_url, logout_url, header_note_title, rate_plan ),
          Div(
            Div(
              Link_area(
                Toolbar(
                  notebook,
                  hide_toolbar = parent_id or notebook.read_write == Notebook.READ_ONLY,
                  note_word = forum_tag and u"post" or u"note",
                ),
                notebooks, notebook, parent_id, notebook_path, updates_path, user, rate_plan,
              ),
              id = u"left_area",
            ),
            Div(
              ( notebook.read_write != Notebook.READ_ONLY ) and Noscript(
                P( Strong(
                  u"""
              Luminotes requires JavaScript to be enabled in your web browser in order to edit
              your wiki. Please <a href="/enable_javascript">enable JavaScript</a> before continuing.
              """
                ) ),
              ) or None,
              Rounded_div(
                ( notebook.name == u"trash" ) and u"trash_notebook" or u"current_notebook",
                parent_id and Span(
                  A( u"empty", href = u"/notebooks/%s" % notebook.object_id, id = u"empty_trash_link" ),
                  u" | ",
                  A( u"go back", href = u"/notebooks/%s" % parent_id ),
                  id = u"notebook_header_links",
                ) or None,
                ( notebook.name == u"Luminotes" and title == u"source code" ) and \
                  Strong( "%s %s" % ( notebook.name, VERSION ) ) or \
                  Span(
                    ( notebook.name == u"trash" or notebook.read_write != Notebook.READ_WRITE ) \
                      and Strong( notebook.name ) \
                      or Span( Strong( notebook.name ), id = u"notebook_header_name", title = "Rename this notebook." ),
                  ),
                id = u"notebook_header_area",
                corners = ( u"tl", u"tr", u"br" ),
              ),
              Div(
                Rounded_div(
                  ( notebook.name == u"trash" ) and u"trash_notebook_inner" or u"current_notebook_inner",
                  Div(
                    id = u"deleted_notebooks",
                  ),
                  Page_navigation(
                    notebook_path, len( notes ), total_notes_count, start, count,
                  ),
                  Div(
                    Span( id = u"notes_top" ),
                    static_notes,
                    id = u"notes",
                  ),
                  ( notebook.read_write == Notebook.READ_WRITE ) and Div(
                    id = u"blank_note_stub",
                    class_ = u"blank_note_stub_hidden_border",
                  ) or None,
                  ( forum_tag and user.username and user.username != u"anonymous" ) and \
                    Span(
                      ( forum_tag.value == "blog" ) and
                        P( u"To write a comment, click that large \"+\" button to the left. To publish your comment, click the save button.",
                           class_ = u"small_text" ) or
                        P( u"To write a comment, click that large \"+\" button to the left. To publish your comment, click the save button. Or, ",
                           A( u"start a new discussion", href = u"/forums/%s/create_thread" % forum_tag.value ), u".", separator = "",
                           class_ = u"small_text" ),
                    ) or None,
                  ( forum_tag and ( not user.username or user.username == u"anonymous" ) ) and \
                    P( u"To write a comment, please login first. No account?", A( u"Sign up", href = u"/pricing" ), u"to get a free account.", class_ = "small_text" ) or None,
                  Page_navigation(
                    notebook_path, len( notes ), total_notes_count, start, count,
                    return_text = u"return to the discussion",
                  ),
                  Div(
                    id = u"iframe_area",
                  ),
                  id = u"notebook_background",
                  corners = ( u"tl", ),
                ),
                id = u"notebook_border",
                class_ = ( notebook.name == u"trash" ) and u"trash_notebook_color" or u"current_notebook_color",
              ),
              id = u"center_content_area",
            ),
            Div(
              Note_tree_area(
                notebook,
                root_notes,
                recent_notes,
                total_notes_count,
                user,
              ),
              id = u"right_area",
            ),
            id = u"everything_area",
          ),
          Span( id = "grabber_hover_preload" ),
        )
Exemple #7
0
    def __init__(self, toolbar, notebooks, notebook, parent_id, notebook_path,
                 updates_path, user, rate_plan):
        linked_notebooks = [
            nb for nb in notebooks
            if (nb.read_write == Notebook.READ_WRITE or
                (nb.read_write == Notebook.READ_ONLY
                 and not nb.name.startswith(u"Luminotes"))) and nb.name not in
            (u"trash") and nb.deleted is False
        ]

        if [tag for tag in notebook.tags if tag.name == u"forum"]:
            forum_tag = True
            forum_name = tag.value
            notebook_word = u"discussion"
            note_word = u"post"
        else:
            forum_tag = False
            forum_name = None
            notebook_word = u"notebook"
            note_word = u"note"

        Div.__init__(
            self,
            toolbar,
            (user.username == u"anonymous")
            and self.forum_link(forum_tag, forum_name) or None,
            (user.username != u"anonymous") and Div(
                (notebook_path != u"/") and Div(
                    H4(
                        u"this %s" % notebook_word,
                        id=u"this_notebook_area_title",
                    ),
                    self.forum_link(forum_tag, forum_name),
                    (rate_plan.get(u"notebook_sharing")
                     and notebook.name == u"Luminotes blog")
                    and Div(
                        A(
                            u"follow",
                            href=u"%s?rss" % notebook_path,
                            id=u"blog_rss_link",
                            title=
                            u"Subscribe to the RSS feed for the Luminotes blog.",
                        ),
                        A(
                            Img(src=u"/static/images/rss.png",
                                width=u"14",
                                height=u"14",
                                class_=u"middle_image padding_left"),
                            href=u"%s?rss" % notebook_path,
                            title=
                            u"Subscribe to the RSS feed for the Luminotes blog.",
                        ),
                        class_=u"link_area_item",
                    ) or
                    (updates_path and rate_plan.get(u"notebook_sharing") and
                     (not forum_tag) and Div(
                         A(
                             u"follow",
                             href=updates_path,
                             id=u"notebook_rss_link",
                             title=u"Subscribe to the RSS feed for this %s." %
                             notebook_word,
                         ),
                         A(
                             Img(src=u"/static/images/rss.png",
                                 width=u"14",
                                 height=u"14",
                                 class_=u"middle_image padding_left"),
                             href=updates_path,
                             title=u"Subscribe to the RSS feed for this %s." %
                             notebook_word,
                         ),
                         class_=u"link_area_item",
                     ) or None),
                    (notebook.read_write != Notebook.READ_ONLY) and Div(
                        A(
                            u"nothing but %ss" % note_word,
                            href=u"#",
                            id=u"declutter_link",
                            title=
                            u"Focus on just your %ss without any distractions."
                            % note_word,
                        ),
                        class_=u"link_area_item",
                    ) or None,
                    (notebook.read_write != Notebook.READ_WRITE
                     and notebook.name != u"Luminotes") and Div(
                         A(
                             u"export",
                             href=u"#",
                             id=u"export_link",
                             title=
                             u"Download a stand-alone copy of the entire %s." %
                             notebook_word,
                         ),
                         class_=u"link_area_item",
                     ) or None,
                    (notebook.read_write != Notebook.READ_WRITE) and Div(
                        A(
                            u"print",
                            href=u"/notebooks/export?notebook_id=%s&format=print"
                            % notebook.object_id,
                            id=u"print_notebook_link",
                            target=u"_new",
                            title=u"Print this %s." % notebook_word,
                        ),
                        class_=u"link_area_item",
                    ) or None,
                    (notebook.read_write == Notebook.READ_WRITE) and Span(
                        Div(
                            (notebook.name != u"trash") and A(
                                u"import",
                                href=u"#",
                                id=u"import_link",
                                title=
                                u"Import %ss from other software into Luminotes."
                                % note_word,
                            ) or None,
                            (notebook.name != u"trash") and u"|" or None,
                            A(
                                u"export",
                                href=u"#",
                                id=u"export_link",
                                title=
                                u"Download a stand-alone copy of the entire %s."
                                % notebook_word,
                            ),
                            class_=u"link_area_item",
                        ) or None,
                        (notebook.name != u"trash") and Div(
                            notebook.trash_id and A(
                                u"trash",
                                href=u"/notebooks/%s?parent_id=%s" %
                                (notebook.trash_id, notebook.object_id),
                                id=u"trash_link",
                                title=u"Look here for %ss you've deleted." %
                                note_word,
                            ) or None,
                            (notebook.owner and notebook.name != u"trash"
                             and notebook.trash_id) and u"|" or None,
                            (notebook.owner and notebook.name != u"trash")
                            and A(
                                u"delete",
                                href=u"#",
                                id=u"delete_notebook_link",
                                title=u"Move this %s to the trash." %
                                notebook_word,
                            ) or None,
                            class_=u"link_area_item",
                        ) or None,
                        (notebook.owner and notebook.name != u"trash") and Div(
                            A(
                                u"rename",
                                href=u"#",
                                id=u"rename_notebook_link",
                                title=u"Change the name of this %s." %
                                notebook_word,
                            ),
                            class_=u"link_area_item",
                        ) or None,
                        (notebook.owner and notebook.name != u"trash" and
                         user.username and rate_plan.get(u"notebook_sharing"))
                        and Div(
                            A(
                                u"share",
                                href=u"#",
                                id=u"share_notebook_link",
                                title=u"Share this %s with others." %
                                notebook_word,
                            ),
                            class_=u"link_area_item",
                        ) or None,
                        Div(
                            A(
                                u"print",
                                href=
                                u"/notebooks/export?notebook_id=%s&format=print"
                                % notebook.object_id,
                                id=u"print_notebook_link",
                                target=u"_new",
                                title=u"Print this %s." % notebook_word,
                            ),
                            class_=u"link_area_item",
                        ) or None,
                        (notebook.name == u"trash") and Rounded_div(
                            u"trash_notebook",
                            A(
                                u"trash",
                                href=u"#",
                                id=u"trash_link",
                                title=u"Look here for %ss you've deleted." %
                                note_word,
                            ),
                            class_=u"link_area_item",
                        ) or None,
                    ) or None,
                    id=u"this_notebook_area",
                ) or None,
                (not forum_tag) and Div((len(linked_notebooks) > 0) and H4(
                    u"notebooks",
                    id=u"notebooks_area_title",
                ) or None, [
                    (nb.object_id == notebook.object_id) and Rounded_div(
                        u"current_notebook",
                        A(
                            nb.name,
                            href=u"/notebooks/%s" % nb.object_id,
                            id=u"notebook_%s" % nb.object_id,
                        ),
                        (len(linked_notebooks) > 1) and Span(
                            Img(src=u"/static/images/up_arrow.png",
                                width=u"20",
                                height=u"17",
                                id=u"current_notebook_up"),
                            Img(src=u"/static/images/down_arrow.png",
                                width=u"20",
                                height=u"17",
                                id=u"current_notebook_down"),
                            Span(id="current_notebook_up_hover_preload"),
                            Span(id="current_notebook_down_hover_preload"),
                        ) or None,
                        class_=u"link_area_item",
                    ) or Div(
                        A(
                            nb.name,
                            href=u"/notebooks/%s" % nb.object_id,
                            id=u"notebook_%s" % nb.object_id,
                        ),
                        class_=u"link_area_item",
                    ) for nb in linked_notebooks
                ],
                                        id=u"notebooks_area") or None,
                (not forum_tag) and Div(
                    Input(
                        type=u"button",
                        class_=u"note_button",
                        id=u"new_notebook_button",
                        value=u"+ notebook",
                        title=u"Create a new wiki notebook.",
                    ),
                    class_=u"link_area_item",
                ) or None,
                Div(id=u"storage_usage_area", ),
                id=u"link_area_holder",
            ) or None,
            id=u"link_area",
        )