[Commotion-dev] DR1 Quickstart

Seamus Tuohy s2e at opentechinstitute.org
Wed Jan 23 16:24:15 UTC 2013


Hello All,

A quick update on the quickstart interface I am putting together for
developer-release one. The quickstart is a "on first boot" interface
that walks a user through customizing a node. This is intended to make
the initial setup of a node trivial for a new user. The current version
is missing the "one-button" setup. This should be added by the start of
next week.

Version 001 of this quickstart was a "mostly" functional luci interface
which set the various configuration files on the node. Version 002 (the
current branch) only configures a nodeConf uci file which the upcoming
commotion daemon will use to configure the node at the conclusion of the
quickstart. As such, the current version will spend of its time
customizing uci files and making ubus calls to the commotion daemon to
fetch data.

You can find the controlling code at
https://github.com/opentechinstitute/commotion-quick-start/tree/Version02 .
If you want to run it you will have to also grab the www directory from
the main branch at
https://github.com/opentechinstitute/commotion-quick-start which
contains the icons, etc.

To put it on a router you simply copy the www folder into the main repo
directory (I will update the repo later today to include this) and then
scp it over to the routers root directory recursively. Once you have
done this you can go to IPADDRESS/cgi-bin/luci/QuickStart to start the
quickstart.

The whole quickstart configuration can be found in
/etc/config/quickstart. This contains one "quickstart" section titled
"options" and multiple "page" sections. "options" holds the current and
last pages as well as a variable that controls weather the Quickstart
page is accessible. We disable it after completion because it allows
non-admin users to manipulate root level controls. A "page" contains
title that is either a number (this is how the controller iterates
through the quickstart) or a title that represents a side page.

Each page has set of title information for its display. The page also
contains a "buttonText" item that specifies the text to be placed on any
button that links to it in the quickstart. A "page" can contain up to
two lists. The first list is modules. This list pulls content to
populate the main section. In our quickstart I have separated most pages
to include only one content section. There is nothing to stop someone
from customizing a page that holds multiple content items. Modules call
a <modulename>Renderer function in the controller when the page is
initially rendered, and a <modulename>Parser function when data from a
page is submitted. This means that if you want your own module you
simple add it to a page and create a renderer and a parser function.
Renderer's send initial variables to the page and parsers process user
input and send back errors that possible occur in the page.They stack
quite well. Lastly a "page" can contain a button list. Buttons call
<buttonname>Button functions when pressed that load up side pages.
noBack and noNext buttons remove the auto-generated last and next
buttons to allow for specialized pages.

Lastly, when you get to the "this node will reset page" on version two
you will have to refresh your browser, as I have removed the actual
reset functionality from the quickstart to give more control to the
daemon. Refreshing the router here will take you to the next page.

We still have a ways to go on "prettifying" the quickstart and updating
the language, and I have yet to implement the ubus calls or to upload
the patches I have made to take over the captive portal. But, please let
me know any feedback you may have. I will send the updated ux map and
language when it finishes our current round of feedback.


Thanks
s2e





More information about the Commotion-dev mailing list