diff options
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html b/sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html new file mode 100644 index 0000000000..a0c2e78c31 --- /dev/null +++ b/sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html @@ -0,0 +1,222 @@ +<!DOCTYPE html> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. +--> +<div id="bodydiv" class="body"> + +<div class="viewform"> + +<form id="userForm"> +<table style="width: 100%;"> +<tr><tr><td><b>Photo:</b></td></tr> +<tr><td><img id="userimg" style="width: 50px; height: 50px; vertical-align: top;"></td></tr> +<tr><tr><td style="padding-top: 6px;"><b>Name:</b></td></tr> +<tr><td><input type="text" id="userTitle" class="flatentry" size="30" placeholder="Enter your name" style="width: 300px;"/></td></tr> +<tr><tr><td style="padding-top: 6px;"><b>About Me:</b></td></tr> +<tr><td><textarea id="userDescription" class="flatentry" cols="40" rows="3" placeholder="Enter a short description of yourself" style="width: 300px;"></textarea></td></tr> +</table> + +<br/> +<table style="width: 100%;"> +<tr> +<th class="thl thr" style="padding-top: 4px; padding-bottom: 4px; padding-left: 2px; padding-right: 2px; ">Calendar</th> +</tr> +</table> + +<table> +<tr><td style="padding-right: 2px;"><input type="text" id="sched1" class="flatentry" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service1" class="flatentry" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="sched2" class="flatentry" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service2" class="flatentry" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="sched3" class="flatentry" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service3" class="flatentry" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="sched4" class="flatentry" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service4" class="flatentry" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="sched5" class="flatentry" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service5" class="flatentry" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr> +</table> +<br/> + +<table style="width: 100%;"> +<tr> +<th class="thl thr" style="padding-top: 4px; padding-bottom: 4px; padding-left: 2px; padding-right: 2px; ">Key chain</th> +</tr> +</table> + +<table> +<tr><td style="padding-right: 2px;"><input type="text" id="name1" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value1" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name2" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value2" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name3" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value3" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name4" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value4" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name5" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value5" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name6" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value6" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name7" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value7" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name8" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value8" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name9" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value9" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +<tr><td style="padding-right: 2px;"><input type="text" id="name10" class="flatentry" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value10" class="flatentry" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr> +</table> +</form> + +</div> + +<script type="text/javascript"> +(function() { + +/** + * Init service references. + */ +var editorComp = sca.component("Editor"); +var user= sca.defun(sca.reference(editorComp, "user")); +var accounts = sca.reference(editorComp, "accounts"); + +/** + * Set page titles. + */ +document.title = config.windowtitle() + ' - Account'; +$('viewhead').innerHTML = '<span class="cmenu">' + username + '</span>'; + +/** + * Set images. + */ +$('userimg').src = ui.b64img(appcache.get('/public/user.b64')); + +/** + * The current account entry and corresponding saved XML content. + */ +var accountentry; +var savedaccountentryxml = ''; + +/** + * Get and display the user's account. + */ +function getaccount() { + showStatus('Loading'); + + return accounts.get('', function(doc) { + + // Stop now if we didn't get an account + if (doc == null) { + showError('Account info not available'); + return false; + } + showOnlineStatus(); + + accountentry = car(elementsToValues(atom.readATOMEntry(mklist(doc)))); + $('userTitle').value = cadr(assoc("'title", cdr(accountentry))); + + var content = cadr(assoc("'content", cdr(accountentry))); + var acct = isNil(content)? mklist() : cdr(content); + + var desc = assoc("'description", acct); + $('userDescription').innerHTML = isNil(desc) || isNil(cdr(desc))? '' : cadr(desc); + + var cal = assoc("'calendar", acct); + reduce(function(i, evt) { + var sched = assoc("'@schedule", evt); + var svc = assoc("'@service", evt); + $('sched' + i).value = isNil(sched)? '' : cadr(sched); + $('service' + i).value = isNil(svc)? '' : cadr(svc); + return i + 1; + }, 1, isNil(cal)? mklist() : cadr(cadr(cal))); + + var keys = assoc("'keys", acct); + reduce(function(i, key) { + var kn = assoc("'@name", key); + var kv = assoc("'@value", key); + $('name' + i).value = isNil(kn)? '' : cadr(kn); + $('value' + i).value = isNil(kv)? '' : cadr(kv); + return i + 1; + }, 1, isNil(keys)? mklist() : cadr(cadr(keys))); + + savedaccountentryxml = car(atom.writeATOMEntry(valuesToElements(mklist(accountentry)))); + return true; + }); +} + +/** + * Save the user's account. + */ +function save(entryxml) { + if (isNil(username)) + return false; + showStatus('Saving'); + savedaccountentryxml = entryxml; + accounts.put('', savedaccountentryxml, function(e) { + if (e) { + showStatus('Local copy'); + return false; + } + + showStatus('Saved'); + return true; + }); + return true; +} + +/** + * Handle a change event + */ +function onaccountchange() { + var title = $('userTitle').value; + var desc = $('userDescription').value; + var cal = map(function(i) { + var sched = $('sched' + i).value; + var svc = $('service' + i).value; + return mklist("'event", mklist("'@schedule", sched), mklist("'@service", svc)); + }, range(1, 6)); + var keys = map(function(i) { + var kn = $('name' + i).value; + var kv = $('value' + i).value; + return mklist("'key", mklist("'@name", kn), mklist("'@value", kv)); + }, range(1, 11)); + + var accountentry = mklist("'entry", mklist("'title", title != ''? title : username), mklist("'id", username), + mklist("'content", mklist("'account", mklist("'description", desc), cons("'keys", keys), cons("'calendar", cal)))); + var entryxml = car(atom.writeATOMEntry(valuesToElements(mklist(accountentry)))); + if (savedaccountentryxml == entryxml) + return false; + + showStatus('Modified'); + return save(entryxml); +} + +$('userTitle').onchange = onaccountchange; +$('userDescription').onchange = onaccountchange; +map(function(i) { + $('sched' + i).onchange = onaccountchange; + $('service' + i).onchange = onaccountchange; + return true; +}, range(1, 6)); +map(function(i) { + $('name' + i).onchange = onaccountchange; + $('value' + i).onchange = onaccountchange; + return true; +}, range(1, 11)); + +/** + * Handle a form submit event. + */ +$('userForm').onsubmit = function() { + onaccountchange(); + return false; +}; + +/** + * Get the user's account. + */ +getaccount(); + +})(); +</script> + +</div> |