Browse Source

There is now a downloadable free trial for Luminotes Desktop. Also made export plugins work on Windows.

master
Dan Helfman 11 years ago
parent
commit
81388ed36b
12 changed files with 111 additions and 22 deletions
  1. +2
    -1
      NEWS
  2. +1
    -0
      config/Version.py
  3. +3
    -1
      controller/Root.py
  4. +2
    -3
      plugins/Invoke.py
  5. +3
    -0
      plugins/__init__.py
  6. +7
    -1
      setup.py
  7. +11
    -0
      static/css/product.css
  8. +7
    -0
      static/css/style.css
  9. BIN
      static/images/trial_button.png
  10. BIN
      static/images/trial_button.xcf
  11. +62
    -12
      view/Download_page.py
  12. +13
    -4
      view/Header.py

+ 2
- 1
NEWS View File

@@ -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
- 0
config/Version.py View File

@@ -1 +1,2 @@
VERSION = u"1.6.7"
TRIAL = True

+ 3
- 1
controller/Root.py View File

@@ -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



+ 2
- 3
plugins/Invoke.py View File

@@ -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 )

+ 3
- 0
plugins/__init__.py View File

@@ -0,0 +1,3 @@
# for the benefit of py2exe
import export_html
import export_csv

+ 7
- 1
setup.py View File

@@ -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,
)


+ 11
- 0
static/css/product.css View File

@@ -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;
}

+ 7
- 0
static/css/style.css View File

@@ -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%;
}

BIN
static/images/trial_button.png View File

Before After
Width: 107  |  Height: 26  |  Size: 2.6KB

BIN
static/images/trial_button.xcf View File


+ 62
- 12
view/Download_page.py View File

@@ -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",
),


+ 13
- 4
view/Header.py View File

@@ -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" ),


Loading…
Cancel
Save