witten
/
luminotes
Archived
1
0
Fork 0
This repository has been archived on 2023-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
luminotes/view/Main_page.py

132 lines
4.6 KiB
Python
Raw Normal View History

from cgi import escape
from Page import Page
from Tags import Input, Div, Span, H2, H4, A, Br, Strong, Script
from Search_form import Search_form
from User_area import User_area
from Link_area import Link_area
from Toolbar import Toolbar
from Json import Json
class Main_page( Page ):
def __init__(
self,
user,
rate_plan,
notebooks,
notebook,
parent_id = None,
login_url = None,
logout_url = None,
startup_notes = None,
note = None,
note_read_write = True,
):
startup_note_ids = [ startup_note.object_id for startup_note in startup_notes ]
static_notes = Div(
note and Div(
note.contents,
id = "static_note_%s" % note.object_id,
) or
[ Div(
startup_note.contents,
id = "static_note_%s" % startup_note.object_id
) for startup_note in startup_notes ],
id = "static_notes",
)
# 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,
} for startup_note in startup_notes ]
if note:
note_dict = {
u"object_id" : note.object_id,
u"revision" : note.revision,
u"deleted_from_id" : note.deleted_from_id,
}
def json( string ):
return escape( unicode( Json( string ) ), quote = True )
title = None
Page.__init__(
self,
title,
Input( type = u"hidden", name = u"storage_bytes", id = u"storage_bytes", value = user.storage_bytes ),
Input( type = u"hidden", name = u"rate_plan", id = u"rate_plan", value = json( rate_plan ) ),
Input( type = u"hidden", name = u"notebooks", id = u"notebooks", value = json( notebooks ) ),
Input( type = u"hidden", name = u"notebook_id", id = u"notebook_id", value = notebook.object_id ),
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"note", id = u"note", value = note and json( note_dict ) or "" ),
Input( type = u"hidden", name = u"note_read_write", id = u"note_read_write", value = json( note_read_write ) ),
Div(
id = u"status_area",
),
Div(
2007-09-27 22:11:16 +00:00
Div(
Br(),
Toolbar( hide_toolbar = not notebook.read_write ),
2007-09-27 22:11:16 +00:00
id = u"toolbar_area",
),
Link_area( notebooks, notebook, parent_id ),
Div(
Div(
Div(
User_area( user, login_url, logout_url ),
Div(
Search_form(),
id = u"search_area",
),
id = u"search_and_user_area",
),
Div(
H2( A( u"Luminotes", href = "/" ), class_ = "page_title" ),
H4( A( u"personal wiki notebook", href = "/" ), class_ = u"page_title" ),
id = u"title_area",
),
id = u"top_area",
),
Div(
Strong( notebook.name ),
parent_id and Span(
u" | ",
A( u"empty trash", href = u"/notebooks/%s" % notebook.object_id, id = u"empty_trash_link" ),
u" | ",
A( u"return to notebook", href = u"/notebooks/%s" % parent_id ),
) or None,
id = u"notebook_header_area",
class_ = ( notebook.name == u"trash" ) and u"current_trash_notebook_name" or u"current_notebook_name",
),
Div(
Div(
Div(
id = u"notes",
),
static_notes,
# Sort of simulate the <noscript> tag by hiding the static version of the notes.
# This code won't be executed if JavaScript is disabled. I'm not actually using
# <noscript> because I want to be able to programmatically read the hidden static
# notes when JavaScript is enabled.
Script(
u"document.getElementById( 'static_notes' ).style.display = 'none';",
type = u"text/javascript",
),
id = u"notebook_background",
),
id = u"notebook_border",
class_ = ( notebook.name == u"trash" ) and u"current_trash_notebook_name" or u"current_notebook_name",
),
id = u"center_area",
),
id = u"everything_area",
),
)