mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=6599
This commit is contained in:
parent
aa41f9487a
commit
43f9d91ecc
37
doc/ui.txt
37
doc/ui.txt
|
@ -84,13 +84,15 @@ call attach_to_project(PROJ_URL, true)
|
||||||
|
|
||||||
function attach_to_project(PROJ_URL, bool user_supplied_url)
|
function attach_to_project(PROJ_URL, bool user_supplied_url)
|
||||||
|
|
||||||
1) Dialog:
|
1) Dialog ("query_key"):
|
||||||
|
|
||||||
|
Attaching to PROJ_URL.
|
||||||
Do you already have an account on PROJ_URL?
|
Do you already have an account on PROJ_URL?
|
||||||
|
|
||||||
No [button]
|
No - create new account [button]
|
||||||
Yes [button] paste account key here: ______________________ [text field]
|
Yes [button] paste account key here: ______________________ [text field]
|
||||||
How to find an existing account key [button]
|
How to find an existing account key [button]
|
||||||
|
Cancel
|
||||||
|
|
||||||
Dialog (how to find an existing account key):
|
Dialog (how to find an existing account key):
|
||||||
|
|
||||||
|
@ -119,7 +121,7 @@ If answer to 1) is "no":
|
||||||
2) BOINC client tries to communicates with project, create account
|
2) BOINC client tries to communicates with project, create account
|
||||||
|
|
||||||
3) if succeed in creating account
|
3) if succeed in creating account
|
||||||
Dialog:
|
Dialog ("welcome"):
|
||||||
|
|
||||||
Welcome to PROJ_NAME
|
Welcome to PROJ_NAME
|
||||||
Your web browser should now show a
|
Your web browser should now show a
|
||||||
|
@ -135,8 +137,8 @@ Web page (foo.edu/welcome.php?auth=xxxxx)
|
||||||
|
|
||||||
Your new account has a name and optional email address.
|
Your new account has a name and optional email address.
|
||||||
You can changes these if you like:
|
You can changes these if you like:
|
||||||
Name: xxx
|
Name: xxx (the user's account name on host)
|
||||||
(this wil be shown on our web site)
|
(this will be shown on our web site)
|
||||||
Email address:
|
Email address:
|
||||||
(this will not be displayed or distributed)
|
(this will not be displayed or distributed)
|
||||||
OK to send periodic email newsletters [checkbox]
|
OK to send periodic email newsletters [checkbox]
|
||||||
|
@ -158,14 +160,19 @@ Web page (foo.edu/welcome.php?auth=xxxxx)
|
||||||
go to the Foo@home home page [link]
|
go to the Foo@home home page [link]
|
||||||
|
|
||||||
|
|
||||||
(update button goes to a "account info updated" page)
|
Notes:
|
||||||
|
- update button goes to a "account info updated" page
|
||||||
|
- if email address already exists, show
|
||||||
|
"An account with that email address already exists.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(User is done)
|
(User is done)
|
||||||
|
|
||||||
|
|
||||||
4) if project replies with an error message:
|
4) if project replies with an error message:
|
||||||
|
|
||||||
Dialog:
|
Dialog ("project_unavailable"):
|
||||||
|
|
||||||
PROJ_NAME is temporarily unavailable.
|
PROJ_NAME is temporarily unavailable.
|
||||||
Please check PROJ_URL [link] for information.
|
Please check PROJ_URL [link] for information.
|
||||||
|
@ -178,15 +185,15 @@ Go to Projects tab.
|
||||||
user is done.
|
user is done.
|
||||||
|
|
||||||
5) If no connection failure or no reply
|
5) If no connection failure or no reply
|
||||||
call network_failure()
|
retry = network_failure()
|
||||||
Go to 6)
|
if (retry) go to 2
|
||||||
|
|
||||||
|
|
||||||
If answer to 4) is "yes":
|
If answer to 4) is "yes":
|
||||||
|
|
||||||
10) if account key is syntactically invalid
|
10) if account key is syntactically invalid
|
||||||
|
|
||||||
Dialog:
|
Dialog ("invalid_key"):
|
||||||
|
|
||||||
The account key xxx is invalid.
|
The account key xxx is invalid.
|
||||||
Account keys are 32 characters, each of which is a-f or 0-9.
|
Account keys are 32 characters, each of which is a-f or 0-9.
|
||||||
|
@ -196,7 +203,7 @@ Dialog:
|
||||||
|
|
||||||
11) If project is up, and account key is verified
|
11) If project is up, and account key is verified
|
||||||
|
|
||||||
Dialog:
|
Dialog ("valid_key"):
|
||||||
Account key is valid.
|
Account key is valid.
|
||||||
This computer is now participating in Foo@home.
|
This computer is now participating in Foo@home.
|
||||||
|
|
||||||
|
@ -205,7 +212,7 @@ Dialog:
|
||||||
User is done.
|
User is done.
|
||||||
|
|
||||||
12) If project is up, and account key is not verified
|
12) If project is up, and account key is not verified
|
||||||
Dialog:
|
Dialog ("unrecognized_key"):
|
||||||
xxx is not the key of any existing account on Foo@home.
|
xxx is not the key of any existing account on Foo@home.
|
||||||
Account keys from other BOINC projects will not work on Foo@home.
|
Account keys from other BOINC projects will not work on Foo@home.
|
||||||
Please check your account key.
|
Please check your account key.
|
||||||
|
@ -216,7 +223,7 @@ Go to 4
|
||||||
|
|
||||||
13) if project replies with an error message:
|
13) if project replies with an error message:
|
||||||
|
|
||||||
Dialog:
|
Dialog ("project_unavailable"):
|
||||||
|
|
||||||
Foo@home is temporarily unavailable.
|
Foo@home is temporarily unavailable.
|
||||||
Please check http://foo.edu [link] for information.
|
Please check http://foo.edu [link] for information.
|
||||||
|
@ -228,7 +235,7 @@ Dialog:
|
||||||
Go to Projects tab.
|
Go to Projects tab.
|
||||||
user is done.
|
user is done.
|
||||||
|
|
||||||
14) else (if no reply): call network_failure()
|
14) else (if no reply): call network_failure(user_supplied_url)
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -238,7 +245,7 @@ function network_failure(bool user_supplied_url):
|
||||||
or got no reply.
|
or got no reply.
|
||||||
Returns true if we should retry the operation.)
|
Returns true if we should retry the operation.)
|
||||||
|
|
||||||
Dialog:
|
Dialog ("unable_to_contact"):
|
||||||
|
|
||||||
BOINC is unable to contact PROJ_URL
|
BOINC is unable to contact PROJ_URL
|
||||||
Possible reasons are:
|
Possible reasons are:
|
||||||
|
|
160
doc/ui_impl.txt
160
doc/ui_impl.txt
|
@ -1,6 +1,158 @@
|
||||||
Implementation notes
|
Implementation notes
|
||||||
|
|
||||||
What do we know at the start?
|
------------------------------------------
|
||||||
If they downloaded the installer then they have network connectivity
|
project-specific installers
|
||||||
and working proxy setup for their browser.
|
|
||||||
If via CD-ROM, nothing is known.
|
These produce a file "start_project.xml" containing the URL
|
||||||
|
(and possibly the name) of the starting project in the BOINC directory.
|
||||||
|
This file tells the BOINC manager to attach to this project.
|
||||||
|
|
||||||
|
The file could be produced either of two ways:
|
||||||
|
|
||||||
|
1) The file is part of the install bundle.
|
||||||
|
This would require projects to edit the installers
|
||||||
|
released by BOINC, using ORCA or whatever tools are needed
|
||||||
|
|
||||||
|
2) The project URL is encoded in the installer filename,
|
||||||
|
and the installer runs a script that finds this name
|
||||||
|
and creates the file.
|
||||||
|
(Not sure how easy this is to do)
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
Database
|
||||||
|
|
||||||
|
Allow nulls in the email_addr table.
|
||||||
|
Make it non-unique.
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
Web interfaces
|
||||||
|
|
||||||
|
- "get account key" page can now return
|
||||||
|
multiple accounts with same email address
|
||||||
|
(show creation time, credit in email message)
|
||||||
|
- can possibly provide interface for merging accounts
|
||||||
|
(but this is tricky and can wait)
|
||||||
|
|
||||||
|
welcome.php?auth=xxx
|
||||||
|
shows welcome page (see doc)
|
||||||
|
and returns cookie with account key
|
||||||
|
|
||||||
|
create_account.php
|
||||||
|
in:
|
||||||
|
name
|
||||||
|
out:
|
||||||
|
status
|
||||||
|
account key
|
||||||
|
|
||||||
|
verify_account.php
|
||||||
|
in:
|
||||||
|
acct key
|
||||||
|
out:
|
||||||
|
yes/no
|
||||||
|
if yes:
|
||||||
|
name
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
Scheduler
|
||||||
|
------------------------------------------
|
||||||
|
GUI RPCs
|
||||||
|
|
||||||
|
create_account();
|
||||||
|
in: URL
|
||||||
|
Implementation:
|
||||||
|
fetches URL/create_account.php
|
||||||
|
poll_create_account();
|
||||||
|
returns status:
|
||||||
|
in_progress,
|
||||||
|
success,
|
||||||
|
returns account key in this case
|
||||||
|
project_down,
|
||||||
|
no_reply
|
||||||
|
|
||||||
|
verify_account()
|
||||||
|
in: URL, key
|
||||||
|
|
||||||
|
poll_verify_account()
|
||||||
|
returns status:
|
||||||
|
in_progress,
|
||||||
|
success,
|
||||||
|
returns yes/no, name in this case
|
||||||
|
project_down,
|
||||||
|
no_reply
|
||||||
|
------------------------------------------
|
||||||
|
Manager
|
||||||
|
|
||||||
|
On startup:
|
||||||
|
If start_project.xml exists
|
||||||
|
attach_to_project(url, false)
|
||||||
|
|
||||||
|
attach_to_project(url/name, user_supplied_url) {
|
||||||
|
restart:
|
||||||
|
switch(show_dialog(query_key)) {
|
||||||
|
yes:
|
||||||
|
if (invalid_key) {
|
||||||
|
show_dialog(invalid_key)
|
||||||
|
goto restart
|
||||||
|
}
|
||||||
|
verify_account(URL, key)
|
||||||
|
while (1)
|
||||||
|
ret = poll_verify_account()
|
||||||
|
if (!in_progress) break
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
switch(ret) {
|
||||||
|
success/yes:
|
||||||
|
show_dialog(valid_key);
|
||||||
|
return;
|
||||||
|
success/no:
|
||||||
|
show_dialog(unrecognized_key);
|
||||||
|
goto restart;
|
||||||
|
error:
|
||||||
|
show_dialog(project_unavailable)
|
||||||
|
no_reply:
|
||||||
|
retry = network_failure()
|
||||||
|
if (retry) goto restart;
|
||||||
|
}
|
||||||
|
no:
|
||||||
|
name = get local account name on host
|
||||||
|
retry:
|
||||||
|
gui_rpc.create_account()
|
||||||
|
while (1)
|
||||||
|
ret = poll_create_account()
|
||||||
|
if !in_progress break;
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
switch(ret) {
|
||||||
|
success:
|
||||||
|
show_web_page(welcome.php?auth=acct_key)
|
||||||
|
show_dialog(welcome)
|
||||||
|
set tab to projects
|
||||||
|
project_down:
|
||||||
|
show_dialog(project_unavailable")
|
||||||
|
set tab to projects
|
||||||
|
no_reply:
|
||||||
|
retry = network_failure();
|
||||||
|
if (goto retry)
|
||||||
|
set tab to projects
|
||||||
|
}
|
||||||
|
cancel:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool network_failure(bool user_supplied_url) {
|
||||||
|
show_web_page(url/proxy_problems.php)
|
||||||
|
ret = show_dialog(unable_to_contact)
|
||||||
|
switch (ret) {
|
||||||
|
change:
|
||||||
|
show_dialog(proxy_settings)
|
||||||
|
retry:
|
||||||
|
return true;
|
||||||
|
cancel:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Miscellaneous:
|
||||||
|
- Add a "account key" button in the Projects tab.
|
||||||
|
When clicked, it shows the account key
|
||||||
|
in a way that can be cut/pasted.
|
||||||
|
|
Loading…
Reference in New Issue