Bladeren bron

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

master
Dan Helfman 10 jaren geleden
bovenliggende
commit
81388ed36b
12 gewijzigde bestanden met toevoegingen van 111 en 22 verwijderingen
  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 Bestand weergeven

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

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

+ 3
- 1
controller/Root.py Bestand weergeven

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

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

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

+ 7
- 1
setup.py Bestand weergeven

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

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

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

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

BIN
static/images/trial_button.xcf Bestand weergeven


+ 62
- 12
view/Download_page.py Bestand weergeven

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

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

Laden…
Annuleren
Opslaan