There is now a downloadable free trial for Luminotes Desktop. Also made export plugins work on Windows.
This commit is contained in:
parent
1d4f3e8300
commit
81388ed36b
3
NEWS
3
NEWS
|
@ -1,4 +1,4 @@
|
|||
1.6.7: ?
|
||||
1.6.7: February 23, 2009
|
||||
* When you export your notebook as an HTML or CSV file, the saved filename is
|
||||
now based on the name of your notebook, for instance "my-to-do-list.html"
|
||||
or "ideas-for-my-novel.csv".
|
||||
|
@ -6,6 +6,7 @@
|
|||
* Converted the existing HTML and CSV export features to work as separate
|
||||
export plugins. This means that a new export format can be implemented as
|
||||
a new plugin.
|
||||
* There is now a downloadable free trial for Luminotes Desktop!
|
||||
|
||||
1.6.6: February 16, 2009
|
||||
* Luminotes now recognizes "mailto:" links as external links, so you can
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
VERSION = u"1.6.7"
|
||||
TRIAL = True
|
||||
|
|
|
@ -361,7 +361,9 @@ class Root( object ):
|
|||
result[ "first_notebook" ] = None
|
||||
|
||||
result[ "download_products" ] = self.__settings[ u"global" ].get( u"luminotes.download_products" )
|
||||
result[ "upgrade" ] = upgrade
|
||||
|
||||
referer = cherrypy.request.headerMap.get( u"Referer" )
|
||||
result[ "upgrade" ] = upgrade or ( referer and u"localhost:" in referer )
|
||||
|
||||
return result
|
||||
|
||||
|
|
|
@ -3,8 +3,7 @@ import plugins
|
|||
|
||||
def invoke( plugin_type, plugin_name, *args, **kwargs ):
|
||||
plugin_name = u"%s_%s" % ( plugin_type, plugin_name )
|
||||
plugin_location = imp.find_module( plugin_name, plugins.__path__ )
|
||||
plugin_module = imp.load_module( plugin_name, *plugin_location )
|
||||
|
||||
plugin_module = getattr( plugins, plugin_name )
|
||||
function = getattr( plugin_module, plugin_type )
|
||||
|
||||
return apply( function, args, kwargs )
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# for the benefit of py2exe
|
||||
import export_html
|
||||
import export_csv
|
8
setup.py
8
setup.py
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
from glob import glob
|
||||
from distutils.core import setup, Distribution
|
||||
|
@ -148,6 +149,11 @@ class InnoScript:
|
|||
print >> ofi, r"end;"
|
||||
|
||||
def compile(self):
|
||||
import os
|
||||
if os.environ.get( "CYGWIN" ):
|
||||
print "Running in Cygwin, so skipping compile"
|
||||
return
|
||||
|
||||
try:
|
||||
import ctypes
|
||||
except ImportError:
|
||||
|
@ -276,7 +282,7 @@ setup(
|
|||
options = dict(
|
||||
py2exe = dict(
|
||||
packages = "cherrypy.filters",
|
||||
includes = "email.header,simplejson",
|
||||
includes = "email.header,simplejson,plugins.*",
|
||||
compressed = 1,
|
||||
optimize = 2,
|
||||
)
|
||||
|
|
|
@ -498,6 +498,11 @@
|
|||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.trial_button_area {
|
||||
padding-top: 1em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.download_button_area {
|
||||
padding-top: 1em;
|
||||
padding-bottom: 0.5em;
|
||||
|
@ -543,3 +548,9 @@
|
|||
margin-bottom: 0.5em;
|
||||
border: 1px solid #999999;
|
||||
}
|
||||
|
||||
.tiny_text {
|
||||
font-size: 60%;
|
||||
line-height: 140%;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
|
|
@ -1233,3 +1233,10 @@ h1 {
|
|||
font-size: 72%;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.trial_upgrade_link {
|
||||
font-weight: bold;
|
||||
background-color: #ffcc66;
|
||||
padding: 0.5em;
|
||||
font-size: 110%;
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
@ -8,7 +8,7 @@ class Download_page( Product_page ):
|
|||
MEGABYTE = 1024 * 1024
|
||||
|
||||
# for now, just assume there's a single download package
|
||||
download_button = download_products[ 0 ].get( "button" )
|
||||
download_button = download_products[ 0 ].get( "button" ).strip()
|
||||
news_url = u"http://luminotes.com/hg/luminotes/file/%s/NEWS" % VERSION
|
||||
|
||||
Product_page.__init__(
|
||||
|
@ -66,14 +66,16 @@ class Download_page( Product_page ):
|
|||
class_ = u"version_text",
|
||||
),
|
||||
class_ = u"plan_name_area download_plan_width",
|
||||
)
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr( Td(), class_ = u"spacer_row" ),
|
||||
Tr( Td( colspan = "2" ), class_ = u"spacer_row" ),
|
||||
Tr(
|
||||
Td(
|
||||
Span( u"Solo", class_ = u"highlight" ), u"note taking",
|
||||
title = u"Luminotes Desktop is designed for individuals.",
|
||||
class_ = u"feature_value",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr(
|
||||
|
@ -81,6 +83,7 @@ class Download_page( Product_page ):
|
|||
u"Runs on your", Span( u"own computer", class_ = u"highlight" ),
|
||||
title = u"All of your notes are stored privately on your own computer or on a USB drive.",
|
||||
class_ = u"feature_value",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr(
|
||||
|
@ -88,6 +91,7 @@ class Download_page( Product_page ):
|
|||
Span( u"Unlimited", class_ = u"highlight" ), u"storage",
|
||||
title = u"Add as many notes, documents, and files as you want.",
|
||||
class_ = u"feature_value",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr(
|
||||
|
@ -95,30 +99,57 @@ class Download_page( Product_page ):
|
|||
u"Works", Span( "offline", class_ = u"highlight" ),
|
||||
title = u"Take notes in meetings, in class, or while on the go. Runs in a web browser, but doesn't need an internet connection.",
|
||||
class_ = u"feature_value",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr( Td(), class_ = u"spacer_row" ),
|
||||
Tr( Td( colspan = "2" ), class_ = u"spacer_row" ),
|
||||
Tr(
|
||||
Td(
|
||||
u"Windows XP/Vista,", A( u"Linux source", href = u"/source_code" ),
|
||||
class_ = u"small_text",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr(
|
||||
Td(
|
||||
u"Firefox 2+, Internet Explorer 7+, Chrome 1+, Safari 3+",
|
||||
class_ = u"small_text",
|
||||
colspan = "2",
|
||||
),
|
||||
),
|
||||
Tr( Td( colspan = "2" ), class_ = u"spacer_row" ),
|
||||
Tr(
|
||||
Td(
|
||||
( not upgrade ) and Td(
|
||||
Div(
|
||||
A(
|
||||
Img(
|
||||
src = u"/static/images/trial_button.png",
|
||||
width = u"107", height = u"26",
|
||||
alt = u"download trial",
|
||||
),
|
||||
href = "/static/luminotes.exe",
|
||||
),
|
||||
Div(
|
||||
u"Completely free",
|
||||
class_ = u"tiny_text",
|
||||
),
|
||||
class_ = u"trial_button_area",
|
||||
),
|
||||
colspan = download_button and "1" or "2",
|
||||
) or None,
|
||||
download_button and Td(
|
||||
Div(
|
||||
download_button,
|
||||
Div(
|
||||
u"Fast and secure",
|
||||
class_ = u"tiny_text",
|
||||
),
|
||||
class_ = u"download_button_area",
|
||||
),
|
||||
),
|
||||
colspan = upgrade and "2" or "1",
|
||||
) or None,
|
||||
),
|
||||
Tr( Td(), class_ = u"spacer_row" ),
|
||||
Tr( Td( colspan = "2" ), class_ = u"spacer_row" ),
|
||||
border = u"1",
|
||||
id = u"upgrade_table",
|
||||
),
|
||||
|
@ -165,12 +196,15 @@ class Download_page( Product_page ):
|
|||
H4( u"Can I try before I buy?", class_ = u"upgrade_question" ),
|
||||
P(
|
||||
"""
|
||||
Sure! Just check out the full-featured
|
||||
Sure! Just
|
||||
""",
|
||||
A( u"download the full-featured free trial", href = "/static/luminotes.exe" ),
|
||||
"""
|
||||
or check out the
|
||||
""",
|
||||
A( u"online demo", href = "/users/demo" ),
|
||||
"""
|
||||
to see Luminotes for yourself. The only difference is that Luminotes Desktop runs in
|
||||
a browser on your own computer instead of on the web.
|
||||
to see Luminotes for yourself.
|
||||
""",
|
||||
class_ = u"upgrade_text",
|
||||
),
|
||||
|
@ -221,15 +255,31 @@ class Download_page( Product_page ):
|
|||
Th(
|
||||
Span( u"Luminotes Desktop", class_ = u"plan_name" ),
|
||||
class_ = u"plan_name_area",
|
||||
colspan = "2",
|
||||
)
|
||||
),
|
||||
Tr(
|
||||
Td(
|
||||
( not upgrade ) and Td(
|
||||
Div(
|
||||
A(
|
||||
Img(
|
||||
src = u"/static/images/trial_button.png",
|
||||
width = u"107", height = u"26",
|
||||
alt = u"download trial",
|
||||
),
|
||||
href = "/static/luminotes.exe",
|
||||
),
|
||||
class_ = u"trial_button_area",
|
||||
),
|
||||
colspan = download_button and "1" or "2",
|
||||
) or None,
|
||||
download_button and Td(
|
||||
Div(
|
||||
download_button,
|
||||
class_ = u"download_button_area",
|
||||
),
|
||||
),
|
||||
colspan = upgrade and "2" or "1",
|
||||
) or None,
|
||||
),
|
||||
id = u"upgrade_table_small",
|
||||
),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from Tags import Div, A, Img, Span
|
||||
from config.Version import VERSION
|
||||
from Tags import Div, A, Img, Span, B
|
||||
from config.Version import VERSION, TRIAL
|
||||
|
||||
class Header( Div ):
|
||||
def __init__( self, user, first_notebook, login_url, logout_url, note_title, rate_plan = None ):
|
||||
|
@ -9,6 +9,15 @@ class Header( Div ):
|
|||
alt = u"Luminotes",
|
||||
)
|
||||
|
||||
trial_expired = False
|
||||
if TRIAL:
|
||||
from pytz import utc
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
trial_age = datetime.now( tz = utc ) - first_notebook.revision
|
||||
if trial_age > timedelta( days = 30 ):
|
||||
trial_expired = True
|
||||
|
||||
if rate_plan and rate_plan.get( u"name" ) == u"desktop":
|
||||
Div.__init__(
|
||||
self,
|
||||
|
@ -16,8 +25,8 @@ class Header( Div ):
|
|||
( note_title == u"home" ) and title_image or
|
||||
A( title_image, href = u"http://luminotes.com/", target = "_new" ),
|
||||
Div(
|
||||
u"version", VERSION, u" | ",
|
||||
A( u"upgrade", href = u"http://luminotes.com/download?upgrade=True", target = "_new" ), u" | ",
|
||||
( TRIAL and u"trial" or u"" ), u"version", VERSION, u" | ",
|
||||
A( u"upgrade", href = u"http://luminotes.com/download", target = "_new", class_ = trial_expired and "trial_upgrade_link" or u"" ), u" | ",
|
||||
A( u"community", href = u"http://luminotes.com/community", target = "_new" ), u" | ",
|
||||
A( u"blog", href = u"http://luminotes.com/blog/", target = "_new" ), u" | ",
|
||||
A( u"close", href = u"/close" ),
|
||||
|
|
Reference in New Issue