mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5282 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
387 lines
11 KiB
JavaScript
387 lines
11 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2006, The Dojo Foundation
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the
|
|
modified BSD license. For more information on Dojo licensing, see:
|
|
|
|
http://dojotoolkit.org/community/licensing.shtml
|
|
*/
|
|
|
|
dojo.provide("dojo.widget.DocPane");
|
|
|
|
dojo.require("dojo.widget.*");
|
|
dojo.require("dojo.io.*");
|
|
dojo.require("dojo.event.*");
|
|
dojo.require("dojo.widget.HtmlWidget");
|
|
dojo.require("dojo.widget.Editor2");
|
|
dojo.require("dojo.widget.Dialog");
|
|
|
|
dojo.require("dojo.html.common");
|
|
dojo.require("dojo.html.display");
|
|
|
|
dojo.widget.DocPane = function(){
|
|
dojo.event.topic.subscribe("/docs/function/results", this, "onDocResults");
|
|
dojo.event.topic.subscribe("/docs/package/results", this, "onPkgResults");
|
|
dojo.event.topic.subscribe("/docs/function/detail", this, "onDocSelectFunction");
|
|
}
|
|
|
|
dojo.widget.defineWidget(
|
|
"dojo.widget.DocPane",
|
|
dojo.widget.HtmlWidget,
|
|
{
|
|
// summary
|
|
// This widget is used by the API documentation system;
|
|
// Users aren't expected to use this widget directly.
|
|
|
|
// Template parameters
|
|
dialog: null,
|
|
dialogBg: null,
|
|
dialogFg: null,
|
|
logIn: null,
|
|
edit: null,
|
|
save: null,
|
|
cancel: null,
|
|
detail: null,
|
|
result: null,
|
|
packag: null,
|
|
fn: null,
|
|
fnLink: null,
|
|
count: null,
|
|
row: null,
|
|
summary: null,
|
|
description: null,
|
|
variables: null,
|
|
vRow: null,
|
|
vLink: null,
|
|
vDesc: null,
|
|
methods: null,
|
|
mRow: null,
|
|
mLink: null,
|
|
mDesc: null,
|
|
requires: null,
|
|
rRow: null,
|
|
rRow2: null,
|
|
rH3: null,
|
|
rLink: null,
|
|
parameters: null,
|
|
pRow: null,
|
|
pLink: null,
|
|
pDesc: null,
|
|
pOpt: null,
|
|
pType: null,
|
|
sType: null,
|
|
sName: null,
|
|
sParams: null,
|
|
sPType: null,
|
|
sPTypeSave: null,
|
|
sPName: null,
|
|
sPNameSave: null,
|
|
pkgDescription: null,
|
|
|
|
// Fields and methods
|
|
_appends: [],
|
|
templatePath: dojo.uri.dojoUri("src/widget/templates/DocPane.html"),
|
|
templateCssPath: dojo.uri.dojoUri("src/widget/templates/DocPane.css"),
|
|
isContainer: true,
|
|
fillInTemplate: function(){
|
|
this.requires = dojo.html.removeNode(this.requires);
|
|
this.rRow.style.display = "none";
|
|
this.rRow2.style.display = "none";
|
|
|
|
this.methods = dojo.html.removeNode(this.methods);
|
|
this.mRow.style.display = "none";
|
|
|
|
this.dialog = dojo.widget.createWidget("dialog", {}, this.dialog);
|
|
this.dialog.setCloseControl(this.cancel);
|
|
dojo.html.setOpacity(this.dialogBg, 0.8);
|
|
dojo.html.setOpacity(this.dialogFg, 1);
|
|
|
|
dojo.event.connect(this.edit, "onclick", dojo.lang.hitch(this, function(){
|
|
if(!this._isLoggedIn){
|
|
this.dialog.show();
|
|
}
|
|
}));
|
|
dojo.event.connect(this.logIn, "onclick", this, "_logIn");
|
|
dojo.event.connect(this.save, "onclick", this, "_save");
|
|
dojo.event.connect(dojo.docs, "logInSuccess", this, "_loggedIn");
|
|
|
|
/*
|
|
this.pkgDescription = dojo.widget.createWidget("editor2", {
|
|
toolbarAlwaysVisible: true
|
|
}, this.pkgDescription);
|
|
*/
|
|
|
|
this.homeSave = this.containerNode.cloneNode(true);
|
|
this.detailSave = dojo.html.removeNode(this.detail);
|
|
this.resultSave = dojo.html.removeNode(this.result);
|
|
this.packageSave = dojo.html.removeNode(this.packag);
|
|
this.results = dojo.html.removeNode(this.results);
|
|
this.rowParent = this.row.parentNode;
|
|
this.rowSave = dojo.html.removeNode(this.row);
|
|
this.vParent = this.vRow.parentNode;
|
|
this.vSave = dojo.html.removeNode(this.vRow);
|
|
this.pParent = this.pRow.parentNode;
|
|
this.pSave = dojo.html.removeNode(this.pRow);
|
|
this.sPTypeSave = dojo.html.removeNode(this.sPType);
|
|
this.sPNameSave = dojo.html.removeNode(this.sPName);
|
|
this.navSave = dojo.html.removeNode(this.nav);
|
|
},
|
|
|
|
_logIn: function(){
|
|
dojo.docs.setUserName(this.userName.value);
|
|
dojo.docs.setPassword(this.password.value);
|
|
},
|
|
|
|
_loggedIn: function(){
|
|
this._isLoggedIn = true;
|
|
this.dialog.hide();
|
|
this.pkgEditor = dojo.widget.createWidget("editor2", {
|
|
toolbarAlwaysVisible: true
|
|
}, this.pkgDescription);
|
|
},
|
|
|
|
_save: function(){
|
|
if(this.pkgEditor){
|
|
dojo.docs.savePackage(this._pkgPath, {
|
|
description: this.pkgEditor.getEditorContent()
|
|
});
|
|
}
|
|
},
|
|
|
|
onDocSelectFunction: function(message){
|
|
dojo.debug("onDocSelectFunction()");
|
|
for(var key in message){
|
|
dojo.debug(key + ": " + dojo.json.serialize(message[key]));
|
|
}
|
|
var meta = message.meta;
|
|
if(meta){
|
|
var variables = meta.variables;
|
|
var this_variables = meta.this_variables;
|
|
var child_variables = meta.child_variables;
|
|
var parameters = meta.parameters;
|
|
}
|
|
var doc = message.doc;
|
|
dojo.debug(dojo.json.serialize(doc));
|
|
|
|
var appends = this._appends;
|
|
dojo.html.removeChildren(this.domNode);
|
|
this.fn.innerHTML = message.name;
|
|
|
|
this.variables.style.display = "block";
|
|
var all = [];
|
|
if(variables){
|
|
all = variables;
|
|
}
|
|
if(this_variables){
|
|
all = all.concat(this_variables);
|
|
}
|
|
if(child_variables){
|
|
all = all.concat(child_variables);
|
|
}
|
|
if(!all.length){
|
|
this.variables.style.display = "none";
|
|
}else{
|
|
for(var i = 0, one; one = all[i]; i++){
|
|
this.vLink.innerHTML = one;
|
|
this.vDesc.parentNode.style.display = "none";
|
|
appends.push(this.vParent.appendChild(this.vSave.cloneNode(true)));
|
|
}
|
|
}
|
|
|
|
this.sParams.innerHTML = "";
|
|
var first = true;
|
|
for(var param in parameters){
|
|
var paramType = parameters[param].type;
|
|
var paramSummary = parameters[param].summary;
|
|
var paramName = param;
|
|
this.parameters.style.display = "block";
|
|
this.pLink.innerHTML = paramName;
|
|
this.pOpt.style.display = "none";
|
|
if(parameters[param].opt){
|
|
this.pOpt.style.display = "inline";
|
|
}
|
|
this.pType.parentNode.style.display = "none";
|
|
if(parameters[param][0]){
|
|
this.pType.parentNode.style.display = "inline";
|
|
this.pType.innerHTML = paramType;
|
|
}
|
|
this.pDesc.parentNode.style.display = "none";
|
|
if(paramSummary){
|
|
this.pDesc.parentNode.style.display = "inline";
|
|
this.pDesc.innerHTML = paramSummary;
|
|
}
|
|
appends.push(this.pParent.appendChild(this.pSave.cloneNode(true)));
|
|
|
|
if(!first) {
|
|
this.sParams.appendChild(document.createTextNode(", "));
|
|
}
|
|
first = false;
|
|
if(paramType){
|
|
dojo.debug(this.sPTypeSave);
|
|
this.sPTypeSave.innerHTML = paramType;
|
|
this.sParams.appendChild(this.sPTypeSave.cloneNode(true));
|
|
this.sParams.appendChild(document.createTextNode(" "));
|
|
}
|
|
dojo.debug(this.sPNameSave);
|
|
this.sPNameSave.innerHTML = paramName;
|
|
this.sParams.appendChild(this.sPNameSave.cloneNode(true))
|
|
}
|
|
|
|
if(message.returns){
|
|
this.sType.innerHTML = message.returns;
|
|
}else{
|
|
this.sType.innerHTML = "void";
|
|
}
|
|
|
|
this.sName.innerHTML = message.name;
|
|
|
|
this.domNode.appendChild(this.navSave);
|
|
this.domNode.appendChild(this.detailSave.cloneNode(true));
|
|
|
|
for(var i = 0, append; append = appends[i]; i++){
|
|
dojo.html.removeNode(append);
|
|
}
|
|
},
|
|
|
|
onPkgResult: function(/*Object*/ results){
|
|
if(this.pkgEditor){
|
|
this.pkgEditor.close(true);
|
|
dojo.debug(this.pkgDescription);
|
|
}
|
|
var methods = results.methods;
|
|
var requires = results.requires;
|
|
var description = results.description;
|
|
this._pkgPath = results.path;
|
|
var requireLinks = [];
|
|
var appends = this._appends;
|
|
while(appends.length){
|
|
dojo.html.removeNode(appends.shift());
|
|
}
|
|
|
|
dojo.html.removeChildren(this.domNode);
|
|
|
|
this.pkg.innerHTML = results.pkg;
|
|
|
|
var hasRequires = false;
|
|
for(var env in requires){
|
|
hasRequires = true;
|
|
|
|
this.rH3.style.display = "none";
|
|
if(env != "common"){
|
|
this.rH3.style.display = "";
|
|
this.rH3.innerHTML = env;
|
|
}
|
|
|
|
for(var i = 0, require; require = requires[env][i]; i++){
|
|
requireLinks.push({
|
|
name: require
|
|
});
|
|
this.rLink.innerHTML = require;
|
|
this.rLink.href = "#" + require;
|
|
var rRow2 = this.rRow2.parentNode.insertBefore(this.rRow2.cloneNode(true), this.rRow2);
|
|
rRow2.style.display = "";
|
|
appends.push(rRow2);
|
|
}
|
|
var rRow = this.rRow.parentNode.insertBefore(this.rRow.cloneNode(true), this.rRow);
|
|
rRow.style.display = "";
|
|
appends.push(rRow);
|
|
}
|
|
|
|
if(hasRequires){
|
|
appends.push(this.packageSave.appendChild(this.requires.cloneNode(true)));
|
|
}
|
|
|
|
if(results.size){
|
|
for(var i = 0, method; method = methods[i]; i++){
|
|
this.mLink.innerHTML = method.name;
|
|
this.mLink.href = "#" + method.name;
|
|
this.mDesc.parentNode.style.display = "none";
|
|
if(method.summary){
|
|
this.mDesc.parentNode.style.display = "inline";
|
|
this.mDesc.innerHTML = method.summary;
|
|
}
|
|
var mRow = this.mRow.parentNode.insertBefore(this.mRow.cloneNode(true), this.mRow);
|
|
mRow.style.display = "";
|
|
appends.push(mRow);
|
|
}
|
|
appends.push(this.packageSave.appendChild(this.methods.cloneNode(true)));
|
|
}
|
|
|
|
this.domNode.appendChild(this.packageSave);
|
|
|
|
/*
|
|
dojo.debug(description);
|
|
function fillContent(){
|
|
this.pkgDescription.replaceEditorContent(description);
|
|
this.pkgDescription._updateHeight();
|
|
}
|
|
if(this.pkgDescription.isLoaded){
|
|
fillContent();
|
|
}else{
|
|
dojo.event.connect(this.pkgDescription, "onLoad", dojo.lang.hitch(this, fillContent));
|
|
}
|
|
*/
|
|
this.pkgDescription.innerHTML = description;
|
|
|
|
function makeSelect(fOrP, x){
|
|
return function(e) {
|
|
dojo.event.topic.publish("/docs/" + fOrP + "/select", x);
|
|
}
|
|
}
|
|
|
|
var as = this.domNode.getElementsByTagName("a");
|
|
for(var i = 0, a; a = as[i]; i++){
|
|
if(a.className == "docMLink"){
|
|
dojo.event.connect(a, "onclick", makeSelect("function", methods[i]));
|
|
}else if(a.className == "docRLink"){
|
|
dojo.event.connect(a, "onclick", makeSelect("package", requireLinks[i]));
|
|
}
|
|
}
|
|
},
|
|
|
|
onDocResults: function(fns){
|
|
dojo.debug("onDocResults(): called");
|
|
|
|
if(fns.length == 1){
|
|
dojo.event.topic.publish("/docs/function/select", fns[0]);
|
|
return;
|
|
}
|
|
|
|
dojo.html.removeChildren(this.domNode);
|
|
|
|
this.count.innerHTML = fns.length;
|
|
var appends = [];
|
|
for(var i = 0, fn; fn = fns[i]; i++){
|
|
this.fnLink.innerHTML = fn.name;
|
|
this.fnLink.href = "#" + fn.name;
|
|
if(fn.id){
|
|
this.fnLink.href = this.fnLink.href + "," + fn.id;
|
|
}
|
|
this.summary.parentNode.style.display = "none";
|
|
if(fn.summary){
|
|
this.summary.parentNode.style.display = "inline";
|
|
this.summary.innerHTML = fn.summary;
|
|
}
|
|
appends.push(this.rowParent.appendChild(this.rowSave.cloneNode(true)));
|
|
}
|
|
|
|
function makeSelect(x){
|
|
return function(e) {
|
|
dojo.event.topic.publish("/docs/function/select", x);
|
|
}
|
|
}
|
|
|
|
this.domNode.appendChild(this.resultSave.cloneNode(true));
|
|
var as = this.domNode.getElementsByTagName("a");
|
|
for(var i = 0, a; a = as[i]; i++){
|
|
dojo.event.connect(a, "onclick", makeSelect(fns[i]));
|
|
}
|
|
|
|
for(var i = 0, append; append = appends[i]; i++){
|
|
this.rowParent.removeChild(append);
|
|
}
|
|
}
|
|
}
|
|
);
|