summaryrefslogtreecommitdiffstats
path: root/sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html')
-rw-r--r--sca-cpp/branches/lightweight-sca/hosting/server/htdocs/account/index.html222
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>