vitro/webapp/web/js/account/accountProxyCommon.js
2011-10-27 18:37:13 +00:00

75 lines
2.5 KiB
JavaScript

/* $This file is distributed under the terms of the license in /doc/license.txt$ */
/*
* A collection of building blocks for the proxy-management UI.
*/
/*
* ----------------------------------------------------------------------------
* proxyInfoElement
* ----------------------------------------------------------------------------
* Display information about an entity according to the template. The entity
* can be either:
* a profile -- Individual to be edited.
* a proxy -- User Account to do the editing, optionally with info from a
* profile associated with that individual.
* ----------------------------------------------------------------------------
* The template must inlude
* 1) a link with attribute templatePart="remove" and restoreText="[something]"
* 2) a hidden field with attribute templatePart="uriField" and value="%uri%" see below
*
* The template may include tokens to be replaced, from the following:
* %uri% -- the URI of the individual being displayed
* %label& -- the label of the individual.
* %classLabel% -- the label of the most specific class of the individual.
* %imageUrl% -- the URL that will fetch the image of the individual,
* or a placeholder image.
* ----------------------------------------------------------------------------
*/
function proxyInfoElement(template, uri, label, classLabel, imageUrl, existing) {
this.uri = uri;
var existed = existing;
var removed = false;
var content = template.replace(/%uri%/g, uri).replace(/%label%/g, label)
.replace(/%classLabel%/g, classLabel).replace(/%imageUrl%/g,
imageUrl);
this.toString = function() {
return "proxyInfoElement: " + content;
}
this.element = function() {
var element = $("<div name='proxyInfoElement'>" + content + "</div>");
var removeLink = $("[templatePart='remove']", element).first();
var removeText = removeLink.text();
var restoreText = removeLink.attr('restoreText');
var proxyUriField = $("[templatePart='uriField']", element);
var showRemoved = function() {
if (removed) {
removeLink.text(restoreText);
proxyUriField.attr('disabled', 'disabled');
element.addClass('removed');
} else {
removeLink.text(removeText);
proxyUriField.attr('disabled', '');
element.removeClass('removed');
}
}
removeLink.click(function(event) {
removed = !removed;
showRemoved();
return false;
});
element.removeClass('new existing removed');
element.addClass(existed ? 'existing' : 'new')
showRemoved()
return element;
}
}