Commit 15d6eafd authored by François Billioud's avatar François Billioud

implement multiple selections and delete

parent 214d845b
......@@ -21,7 +21,6 @@ var Page = function(page) {
this.html = window.document;
this.xml = null;
this.editor = null;
//define as current page
currentPage = this;
if(page!=undefined) {this.loadXML("xml/"+page+".xml");}
......@@ -139,13 +138,17 @@ setCurrentPage = function(page) {currentPage = page;}
/*
* User Class
* stores useful information about a user and provides methods to manipulate them
* @param arg : a json User object to load
*/
var User = function(details) {
this.name = "unknown";
this.language = "en";
this.storage = "http://www.unhosted-dav.com";
this.identityProvider = "http://www.webfinger.com";
this.displayPreferences = 15;//number of displayed document in the list
var User = function(arg) {
if(arg) {this.load(arg);}
else {
this.name = "unknown";
this.language = "en";
this.storage = "http://www.unhosted-dav.com";
this.identityProvider = "http://www.webfinger.com";
this.displayPreferences = 15;//number of displayed document in the list
}
}
User.prototype = new UngObject();//inherits from UngObject
User.prototype.load({//add methods thanks to the UngObject.load method
......@@ -168,9 +171,7 @@ User.prototype.load({//add methods thanks to the UngObject.load method
});
getCurrentUser = function() {
var user = new User();
user.load(JSON.parse(localStorage.getItem("currentUser")));
return user;
return new User(JSON.parse(localStorage.getItem("currentUser")));
}
setCurrentUser = function(user) {localStorage.setItem("currentUser", JSON.stringify(user));}
......@@ -182,18 +183,24 @@ setCurrentUser = function(user) {localStorage.setItem("currentUser", JSON.string
* to manipulate these elements.
*/
/* JSON document */
var JSONDocument = function() {
this.language = getCurrentUser().getLanguage();
this.version = null;
this.author=getCurrentUser().getName();
this.lastUser=getCurrentUser().getName();
this.title="Untitled";
this.content="";
this.creation=currentTime();
this.lastModification=currentTime();
this.state=this.states.draft;
/**
* JSON document
* @param arg : a json JSONDocument object to load
*/
var JSONDocument = function(arg) {
if(arg) {this.load(arg);}
else {
this.language = getCurrentUser().getLanguage();
this.version = null;
this.author=getCurrentUser().getName();
this.lastUser=getCurrentUser().getName();
this.title="Untitled";
this.content="";
this.creation=currentTime();
this.lastModification=currentTime();
this.state=JSONDocument.prototype.states.draft;
}
}
JSONDocument.prototype = new UngObject();//inherits from UngObject
......@@ -240,7 +247,8 @@ JSONDocument.prototype.load({//add methods thanks to the UngObject.load method
save: function(instruction) {
var doc = this;
saveFile(getDocumentAddress(this), doc, instruction);
}
},
remove: function(instruction) {deleteFile(getDocumentAddress(this), instruction);}
});
JSONDocument.prototype.states = {
draft:{"fr":"Brouillon","en":"Draft"},
......@@ -248,9 +256,7 @@ JSONDocument.prototype.states = {
deleted:{"fr":"Supprimé","en":"Deleted"}
}
getCurrentDocument = function() {
var doc = new JSONDocument();
doc.load(JSON.parse(localStorage.getItem("currentDocument")));
return doc;
return new JSONDocument(JSON.parse(localStorage.getItem("currentDocument")));
}
setCurrentDocument = function(doc) {localStorage.setItem("currentDocument",JSON.stringify(doc));}
......@@ -269,28 +275,29 @@ getDocumentAddress = function(doc) {return "dav/"+doc.getCreation();}
* open a dialog box to edit document information
*/
editDocumentSettings = function() {
loadFile("xml/xmlElements.xml", "html", function(data) {
$("rename", data).dialog({
autoOpen: true,
height: 131,
width: 389,
modal: true,
buttons: {
"Save": function(){
var doc = getCurrentDocument();
doc.setTitle($(this).find("#name").attr("value"));
doc.setLanguage($(getCurrentDocument()).find("#language").attr("value"));
doc.setVersion($(getCurrentDocument()).find("#version").attr("value"));
saveCurrentDocument();
doc.setAsCurrentDocument();//diplay modifications
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
saveCurrentDocument();
loadFile("xml/xmlElements.xml", "html", function(data) {
$("rename", data).dialog({
autoOpen: true,
height: 131,
width: 389,
modal: true,
buttons: {
"Save": function(){
var doc = getCurrentDocument();
doc.setTitle($(this).find("#name").attr("value"));
doc.setLanguage($(getCurrentDocument()).find("#language").attr("value"));
doc.setVersion($(getCurrentDocument()).find("#version").attr("value"));
saveCurrentDocument();
doc.setAsCurrentDocument();//diplay modifications
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
)}
saveCurrentDocument = function() {
......
......@@ -33,51 +33,132 @@ UngObject.prototype.inherits = function(superClass) {
this.prototype.load(superClass.prototype);
}
/* return true only if two objects are equals */
UngObject.prototype.equals = function(object) {
for (var property in object) {
if (this.hasOwnProperty(property)) {
var isEquals = this[property]&&typeof(this[property])=="object" ? UngObject.prototype.equals.call(this[property],object[property]) : this[property]===object[property];
if (!isEquals) {return false}
}
}
return true;
}
/**
* Class List
* this class provides usual API to manipulate list structure
* @param arg : a json list object
* @param contentType : the type of the elements of the list
*/
var List = function(arg) {
if(arg) {this.load(arg);}
var List = function(arg, contentType) {
if(arg && arg.headElement) {
if(contentType) {
this.headElement=new contentType(arg.headElement);
} else {
this.headElement = arg.headElement;
}
this.length = arg.length;
this.previous = new List(arg.previous, contentType);
}
else {
this.content = new Array();
this.length = this.content.length;
this.nullElement();
}
}
List.prototype = new UngObject();
List.prototype.load ({
List.prototype.load({
nullElement: function() {
this.headElement = null;
this.previous = undefined;
this.length = 0;
},
size: function() {return this.length;},
put: function(key,value) {
if(!this.content[key]) {this.length++;}
this.content[key]=value;
head: function() {return this.headElement;},
tail: function() {return this.previous;},
isEmpty: function() {return this.head()===null;},
equals: function(list) {
return this.head().equals(list.head()) && this.tail().equals(list.tail());
},
add: function(element) {this.put(this.size(),element);},
get: function(i) {return this.content[i];},
concat: function(list) {while(!list.isEmpty()) {this.add(list.pop())}},
remove: function(i) {delete this.content[i];this.length--;},
isEmpty: function() {return this.size()==0;},
head: function() {return this.isEmpty() ? null : this.get(this.size()-1);},
pop: function() {
if(this.isEmpty()) {return null;}
var element = this.get(this.size()-1);
this.remove(this.size()-1);
return element;
add: function(value) {
var t = new List();
t.load(this);
this.headElement = value;
this.previous = t;
this.length = t.size()+1;
},
get: function(i) {
if(i>=this.size()) {return null;}
if(i==0) {return this.head();}
return this.tail().get(i-1);
},
recursiveCall: function(instruction) {
var list = new List();
list.load(this);
if(list.isEmpty()) {return false;}
var result = instruction(list.pop());
return result ? result : list.recursiveCall(instruction);
set: function(i,element) {
if(i>=this.size()) {error("set out of bounds, "+i+" : "+this.size(),this);return}
if(i==0) {
this.headElement=element;
} else {
this.tail().set(i-1,element);
}
},
remove: function(i) {
if(i>=this.size()) {error("remove out of bounds, "+i+" : "+this.size(),this);return}//particular case
if(i==0) {this.pop();return}//particular case
if(i==1) {//init
this.previous = this.tail().tail();
} else {//recursion
this.tail().remove(i-1);
}
this.length--;
},
pop: function() {
if(this.isEmpty()) {error("pop on empty list",this);return null;}
var h = this.head();
this.load(this.tail())
return h;
},
find: function(object) {
for(var i = 0; i<this.length; i++) {if(this.get(i)===object) {return i;}}
return -1;
if(this.isEmpty()) {return -1}//init-false
var elt = this.head();
if(object.equals) {//init-true
if(object.equals(this.head())) {return 0;}//with an adapted comparator
} else {
if(object===this.head()) {return 0;}//with usual comparator
}
var recursiveResult = this.tail().find(object);//recursion
return recursiveResult>=0 ? this.tail().find(object)+1 : recursiveResult;
},
contains: function(object) { return (find(object)!=-1); }
contains: function(object) {if(this.isEmpty()) {return false} else {return object===this.head() ? true : this.tail().contains(object)}},
insert: function(element,i) {
if(i>this.size()) {error("insert out of bounds, "+i+" : "+this.size(),this);return}//particular case
if(i==0) {//init
this.add(element);
} else {//recursion
this.tail().insert(element,i-1);
this.length++;
}
},
replace: function(oldElement,newElement) {
if(this.isEmpty()) {error("<<element not found>> when trying to replace",this);return}//init-false
if(oldElement===this.head()) {
this.set(0,newElement);//init-true
} else {
this.tail().replace(oldElement,newElement);//recursion
}
},
removeElement: function(element) {//remove each occurence of the element in this list
if(this.isEmpty()) {return}
this.tail().removeElement(element);
if(element.equals) {//init-true
if(element.equals(this.head())) {this.pop();}//with an adapted comparator
} else {
if(element===this.head()) {this.pop();}//with usual comparator
}
}
});
error: function(message,object) {
errorObject = object;
console.log(message);
}
/**
* returns the current date
......@@ -89,17 +170,17 @@ currentTime = function() {return (new Date()).toUTCString();}
// save
saveXHR = function(address) {
$.ajax({
url: address,
type: "PUT",
headers: {
Authorization: "Basic "+btoa("smik:asdf")},
fields: {
withCredentials: "true"
},
data: JSON.stringify(getCurrentDocument()),
success: function(){alert("saved");},
error: function(xhr) { alert("error while saving");}
});
url: address,
type: "PUT",
headers: {
Authorization: "Basic "+btoa("smik:asdf")},
fields: {
withCredentials: "true"
},
data: JSON.stringify(getCurrentDocument()),
success: function(){alert("saved");},
error: function(xhr) { alert("error while saving");}
});
};
/**
......@@ -110,11 +191,11 @@ saveXHR = function(address) {
*/
loadFile = function(address, type, instruction) {
$.ajax({
url: address,
type: "GET",
url: address,
type: "GET",
dataType: type,
success: instruction,
error: function(type) {t=type;alert("er");}
success: instruction,
error: function(type) {alert("Error "+type.status+" : fail while trying to load "+address);}
});
}
......@@ -129,28 +210,41 @@ saveFile = function(address, content, instruction) {
fields: { withCredentials: "true" },
success: instruction,
error: function(type) {
if(type.status==201) {instruction();}//ajax thinks that 201 is an error...
if(type.status==201 || type.status==204) {instruction();}//ajax thinks that 201 is an error...
}
});
};
}
deleteFile = function(address, instruction) {
$.ajax({
url: address,
type: "DELETE",
headers: { Authorization: "Basic "+btoa("smik:asdf")},
fields: { withCredentials: "true" },
success: instruction,
error: function(type) {
alert(type.status);//ajax thinks that 201 is an error...
}
});
}
// load
loadXHR = function(address) {
$.ajax({
url: address,
type: "GET",
url: address,
type: "GET",
dataType: "json",
cache:false,
headers: {
Authorization: "Basic "+btoa("smik:asdf")},
cache:false,
headers: {
Authorization: "Basic "+btoa("smik:asdf")},
fields: {
withCredentials: "true"
withCredentials: "true"
},
success: function(data){
var cDoc = getCurrentDocument();
cDoc.load(data);
cDoc.setAsCurrentDocument();
}
success: function(data){
var cDoc = getCurrentDocument();
cDoc.load(data);
cDoc.setAsCurrentDocument();
}
});
}
......
......@@ -15,13 +15,11 @@ setCurrentDocumentID = function(ID) {return localStorage.setItem("currentDocumen
* @param arg : a documentList json object to load
*/
var DocumentList = function(arg) {
List.call(this,arg);
//List.call(this);
if(arg) {
this.load(arg);
for(var i=0; i<this.size(); i++) {
this.content[i]=new JSONDocument(this.get(i));//load methods of documents
}
this.selectionList = new List(arg.selectionList);//load methods of selectionList
this.load(new List(arg,JSONDocument));
this.selectionList = new List(arg.selectionList,JSONDocument);//load methods of selectionList
}
else {
this.displayedPage = 1;
......@@ -30,27 +28,44 @@ var DocumentList = function(arg) {
}
DocumentList.prototype = new List();
DocumentList.prototype.load({
/* override : put an element at the specified position */
put: function(i, doc) {
this.content[i]=doc;
if(!this.content[i]) {this.length++;}
addDocument: function(doc) {
this.add(doc);
setDocumentList(this);
this.display();
},
removeDocument: function(doc) {
var i = this.find(doc);
this.get(i).remove()//delete the file
this.remove(i);//remove from the list
setDocumentList(this);
this.display();
},
getSelectionList: function() { return this.selectionList; },
resetSelectionList: function() {
this.selectionList = new List();
for(var i=0; i<this.length; i++) {
$("tr td.listbox-table-select-cell input#"+i).attr("checked",false);
for(var i=0; i<this.size(); i++) {
$("tr td.listbox-table-select-cell input#"+i).attr("checked",false);//uncheck
}
setDocumentList(this);
$("span#selected_row_number a").html(0);//display the selected row number
},
checkAll: function() {
for(var i=0; i<this.length; i++) {
this.getSelectionList().put(i,this.get(i));
this.selectionList = new List();
for(var i=0; i<this.size(); i++) {
this.getSelectionList().add(this.get(i));
$("tr td.listbox-table-select-cell input#"+i).attr("checked",true);
}
setDocumentList(this);
$("span#selected_row_number a").html(this.size());//display the selected row number
},
deleteSelectedDocuments: function() {
var selection = this.getSelectionList();
while(!selection.isEmpty()) {
var doc = selection.pop();
this.removeDocument(doc);
}
},
getDisplayedPage: function() {return this.displayedPage;},
......@@ -58,6 +73,7 @@ DocumentList.prototype.load({
/* display the list of documents in the web page */
displayContent: function() {
$("table.listbox tbody").html("");//empty the previous displayed list
var n = this.size();
for(var i=0;i<n;i++) {
var ligne = new Line(this.get(i),i);
......@@ -90,14 +106,17 @@ DocumentList.prototype.load({
loadFile(getDocumentAddress(doc),"json",function(data) {
doc.load(data);//todo : replace by data.header
doc.setContent("");//
list.put(i,doc);
list.set(i,doc);
setDocumentList(list);
});
}
});
getDocumentList = function() {
return new DocumentList(JSON.parse(localStorage.getItem("documentList")));
}
setDocumentList = function(list) {localStorage.setItem("documentList",JSON.stringify(list));}
setDocumentList = function(list) {
localStorage.setItem("documentList",JSON.stringify(list));
}
/**
......@@ -122,20 +141,20 @@ Line.prototype = {
/* add the document of this line to the list of selected documents */
addToSelection: function() {
list = getDocumentList();
list.getSelectionList().put(this.getID(),this);
var list = getDocumentList();
list.getSelectionList().add(this.getDocument());
setDocumentList(list);
},
/* remove the document of this line from the list of selected documents */
removeFromSelection: function() {
var list = getDocumentList();
list.getSelectionList().remove(this.getID());
list.getSelectionList().removeElement(this.getDocument());
setDocumentList(list);
},
/* check or uncheck the line */
changeState: function() {
this.isSelected() ? this.addToSelection() : this.removeFromSelection();
$("span#selected_row_number a").html(getDocumentList().getSelectionList().size());
$("span#selected_row_number a").html(getDocumentList().getSelectionList().size());//display the selected row number
},
/* load the document information in the html of a default line */
......@@ -182,11 +201,7 @@ var createNewDocument = function(type) {
newDocument.setType(type);
newDocument.save(function() {
getDocumentList().add(newDocument);
getDocumentList().addDocument(newDocument);
startDocumentEdition(newDocument);
});
}
var deleteSelectedDocuments = function() {
}
\ No newline at end of file
......@@ -36,10 +36,16 @@
}
var init = function() {
//delete localStorage.documentList;//delete the list for tests
setCurrentPage(new Page());//provide methods on the page
initUser();//initialize the user
if(getCurrentDocumentID()) {getDocumentList().update(getCurrentDocumentID());}//update the list of documents
if(getCurrentDocumentID()&&getDocumentList().get(getCurrentDocumentID())) {
/* update the list with the modifications of the last edited document
* (this method has to been rewritten if using multi users) */
getDocumentList().update(getCurrentDocumentID());
delete localStorage.currentDocumentID;
}
waitBeforeSucceed(//display the list of documents
function(){return Line.loadHTML()},function() {
getDocumentList().resetSelectionList();
......@@ -53,582 +59,580 @@
</script>
</head>
<body>
<div>
<div class="container">
<div class="navigation">
<div class="container">
<div class="navigation">
<!-- Each aggregate of groups is a div wrapper -->
<div class="wrapper" id="wrapper_navigation">
<!-- Each aggregate of groups is a div wrapper -->
<div class="wrapper" id="wrapper_navigation">
<div class=" navigation-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class=" navigation-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<div class="field" title="">
<label> navigation_box </label>
<label> navigation_box </label>
<div class="input"><div >
<a class="email" href="/ung/mail">Email</a>
<a class="document" href="#" onclick="window.location.reload()">Documents</a>
<a class="calendar" href="/ung/calendar">Calendar</a>
</div></div>
</div>
<div class="input"><div >
<a class="email" href="/ung/mail">Email</a>
<a class="document" href="#" onclick="window.location.reload()">Documents</a>
<a class="calendar" href="/ung/calendar">Calendar</a>
</div></div>
</div>
<div class="field date_field" title="The Date">
<div class="field date_field" title="The Date">
<label> Modification Date </label>
<div class="input"></div>
<label> Modification Date </label>
<div class="input"></div>
</div>
</div>
</fieldset>
</div>
</fieldset>
</div>
<div class=" navigation-right">
<fieldset class="widget">
<div class=" navigation-right">
<fieldset class="widget">
<legend class="group_title"></legend>
<legend class="group_title"></legend>
<div class="field" title="">
<div class="field" title="">
<label> your_language </label>
<label> your_language </label>
<div class="input"><div >
<div id="select_language">
<div class="input"><div >
<div id="select_language">
<ul><li>
<span id="current_language">en</span>
<img src="images/ung/arrow_20C.png"/>
<ul id="available_languages">
<li></li>
</ul>
</li></ul>
<ul><li>
<span id="current_language">en</span>
<img src="images/ung/arrow_20C.png"/>
<ul id="available_languages">
<li></li>
</ul>
</li></ul>
</div>
</div></div>
</div>
</div></div>
</div>
</div>
<div class="field" title="">
<div class="field" title="">
<label> user_login_box </label>
<label> user_login_box </label>
<div class="input"><div >
<div class="input"><div >
<a id="right_message">Not Implemented yet</a>
<div id="preference_dialog" title="UNG Preferences"></div>
<a id="userName">Unknown</a>
| <a id="settings" href="#">Settings</a>
| <a id="help" href="#">Help</a>
| <a href="..WebSite_logout">Sign out</a>
<a id="right_message">Not Implemented yet</a>
<div id="preference_dialog" title="UNG Preferences"></div>
<a id="userName">Unknown</a>
| <a id="settings" href="#">Settings</a>
| <a id="help" href="#">Help</a>
| <a href="..WebSite_logout">Sign out</a>
</div></div>
</div></div>
</div>
</div>
</fieldset>
</div>
</fieldset>
</div>
</div>
</div>
<div class="header">
<div class="header">
<!-- Each aggregate of groups is a div wrapper -->
<div class="wrapper" id="wrapper_header">
<!-- Each aggregate of groups is a div wrapper -->
<div class="wrapper" id="wrapper_header">
<div class=" header-left">
<fieldset class="widget">
<div class=" header-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<legend class="group_title"></legend>
<div class="field" title="">
<div class="field" title="">
<label> search_bar </label>
<label> search_bar </label>
<div class="input"><div >
<div class="input"><div >
<a class="ung_docs" href="#" onclick="window.location.reload()">
<img src="images/ung/ung-logo.gif"/>
</a>
<a id="loading_message">Loading...</a>
<a class="ung_docs" href="#" onclick="window.location.reload()">
<img src="images/ung/ung-logo.gif"/>
</a>
<a id="loading_message">Loading...</a>
<form>
<input type="text" name="field_your_search_text" class="field" onkeyup="submitFormOnEnter(event, this.form, 'WebSection_viewSearchResultList')" />
<input type="submit" value="Search Docs" name="WebSection_viewSearchResultList:method" />
</form>
<form>
<input type="text" name="field_your_search_text" class="field" onkeyup="submitFormOnEnter(event, this.form, 'WebSection_viewSearchResultList')" />
<input type="submit" value="Search Docs" name="WebSection_viewSearchResultList:method" />
</form>
</div></div>
</div>
</fieldset>
</div>
</div></div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="main">
<!-- Each aggregate of groups is a div wrapper --
<table class="wrapper" id="wrapper_main"><tr>-->
<div class="wrapper" id="wrapper_main">
<!--<td class=" main-left">-->
<div class=" main-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<label> user_menu_box </label>
<div class="input"><div >
<div class="gadget-column">
<div class="gadget-action">
<div class="menu_create_object">
<ul><li>
<a id="current">
<span>Create New</span>
<img src="images/ung/arrow.png"/>
</a>
<ul>
<li>
<a href="#" onclick="createNewDocument('illustration')">
<img src="images/icons/svg.png" alt=""/>
<span>Web Illustration</span>
</a>
</li>
<li>
<a href="#" onclick="createNewDocument('table')">
<img src="images/icons/table.png" alt=""/>
<span>Web Table</span>
</a>
</li>
<li>
<a href="#" onclick="createNewDocument('text')">
<img src="images/icons/document.png"/>
<span>Web Page</span>
</a>
</li>
</ul>
</li></ul>
</div>
<div class="main">
<!-- Each aggregate of groups is a div wrapper --
<table class="wrapper" id="wrapper_main"><tr>-->
<div class="wrapper" id="wrapper_main">
<!--<td class=" main-left">-->
<div class=" main-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<label> user_menu_box </label>
<div class="input"><div >
<div class="gadget-column">
<div class="gadget-action">
<div class="menu_create_object">
<ul><li>
<a id="current">
<span>Create New</span>
<img src="images/ung/arrow.png"/>
</a>
<ul>
<li>
<a href="#" onclick="createNewDocument('illustration')">
<img src="images/icons/svg.png" alt=""/>
<span>Web Illustration</span>
</a>
</li>
<li>
<a href="#" onclick="createNewDocument('table')">
<img src="images/icons/table.png" alt=""/>
<span>Web Table</span>
</a>
</li>
<li>
<a href="#" onclick="createNewDocument('text')">
<img src="images/icons/document.png"/>
<span>Web Page</span>
</a>
</li>
</ul>
</li></ul>
</div>
<input type="submit" id="upload" name="Upload" value="Upload" />
<div class="file-selection">
<div class="file-quick-search">
<div class="listbox-tree">
<!-- Domain Report Tree mode -->
<div class="listbox-domain-tree-container">
<!-- Select domain node -->
<select name="domain_root_url" onchange="submitAction(this.form, '/ung/setDomainRoot')">
<option value="ung_domain" selected="selected">UNG Documents</option>
</select>
<input type="submit" id="upload" name="Upload" value="Upload" />
<div class="file-selection">
<div class="file-quick-search">
<div class="listbox-tree">
<!-- Domain Report Tree mode -->
<div class="listbox-domain-tree-container">
<!-- Select domain node -->
<select name="domain_root_url" onchange="submitAction(this.form, '/ung/setDomainRoot')">
<option value="ung_domain" selected="selected">UNG Documents</option>
</select>
<!-- Domain node contents -->
<table cellpadding="0"
summary="This table contains the domain tree"
class="your_listbox-table-domain-tree">
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/all_documents.0">All Documents</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
<!-- Domain node contents -->
<table cellpadding="0"
summary="This table contains the domain tree"
class="your_listbox-table-domain-tree">
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/all_documents.0">All Documents</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/by_subject.0">By Subject</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/by_subject.0">By Subject</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/hidden.0">Hidden</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/owner.0">Owner</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/recent.0">Recent</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/shared.0">Shared by me</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/starred.0">Starred</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/trash.0">Trash</button>
</td>
</tr>
</table>
value="ung_domain/hidden.0">Hidden</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/owner.0">Owner</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/recent.0">Recent</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/shared.0">Shared by me</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/starred.0">Starred</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
value="ung_domain/trash.0">Trash</button>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="gadget-listbox" id="gadget-listbox" title="Add Gadgets">
<table id="gadget-table"></table>
</div>
<div class="gadget-listbox" id="gadget-listbox" title="Add Gadgets">
<table id="gadget-table"></table>
</div>
<div class="front_pad">
<div class="front_pad">
<!-- XXX - Use WebSection_viewKnowledgePadColumn to display one column only -->
<div class="draggable_wrapper">
<!-- XXX - Use WebSection_viewKnowledgePadColumn to display one column only -->
<div class="draggable_wrapper">
<div id="gadget_area_wrapper">
<div id="pad-navigation-wrapper">
<div id="gadget_area_wrapper">
<div id="pad-navigation-wrapper">
<div class="tab" id="tabs_switcher">
<span id="tab_switcher_hidden" style="display:none">Show tabs</span>
<span id="tab_switcher_visible">Hide tabs</span>
</div>
<div id="tabs" style="display: block">
<ul>
<div class="tab" id="tabs_switcher">
<span id="tab_switcher_hidden" style="display:none">Show tabs</span>
<span id="tab_switcher_visible">Hide tabs</span>
</div>
<li id="knowledge_pad_module_1" class="tab tab_selected">
<div id="tabs" style="display: block">
<ul>
<span id="knowledge_pad_module_1_title" onclick="loadPadFromServer('knowledge_pad_module/1', 'knowledge_pad_module_1', 'web_front')">Onglet 1</span>
<li id="knowledge_pad_module_1" class="tab tab_selected">
<div class="pad-actions" style="display:block">
<span title="Settings"
class="clickable_image rename_tab_dialog_image"
onclick="showRenamePadPopup('knowledge_pad_module/1',
'knowledge_pad_module_1_title')"></span>
<span title="Remove"
class="clickable_image remove_tab_dialog_image"
onclick=" removeKnowledgePadFromServer(
'knowledge_pad_module/1', 'web_front')" />
</div>
<span id="knowledge_pad_module_1_title" onclick="loadPadFromServer('knowledge_pad_module/1', 'knowledge_pad_module_1', 'web_front')">Onglet 1</span>
</li>
<div class="pad-actions" style="display:block">
<span title="Settings"
class="clickable_image rename_tab_dialog_image"
onclick="showRenamePadPopup('knowledge_pad_module/1',
'knowledge_pad_module_1_title')"></span>
<span title="Remove"
class="clickable_image remove_tab_dialog_image"
onclick=" removeKnowledgePadFromServer(
'knowledge_pad_module/1', 'web_front')" />
</div>
<li class="tab" onclick="showAddNewPadPopup();"
title="Add new tab"
id="add_new_tab_dialog_link">Add tab</li>
</li>
</ul>
</div>
<li class="tab" onclick="showAddNewPadPopup();"
title="Add new tab"
id="add_new_tab_dialog_link">Add tab</li>
<div id="add_new_gadget_link">
<a title="Add gadgets" id="add-gadgets" href="..."><span>Add gadgets</span></a>
</div>
</ul>
</div>
</div>
<div id="add_new_gadget_link">
<a title="Add gadgets" id="add-gadgets" href="..."><span>Add gadgets</span></a>
</div>
<div id="loading-wrapper" style="display:none;">
<img src="ajax-loader.gif" title="Loading" alt="Loading" />
<p> Please wait while your changes are being applied. </p>
</div>
</div>
<!-- Render active Knowledge pad -->
<div id="pad-body-wrapper">
<div id="page_wrapper">
<div id="loading-wrapper" style="display:none;">
<img src="ajax-loader.gif" title="Loading" alt="Loading" />
<p> Please wait while your changes are being applied. </p>
</div>
<!-- No gadgets message -->
<div>
<h3> Your tab is empty. </h3>
<h4> Please use link (<b>Add gadgets</b>) to prepare it yourself. </h4>
</div>
<!-- Render active Knowledge pad -->
<div id="pad-body-wrapper">
<div id="page_wrapper">
<!-- Render pad columns -->
<div class="portal-column" id="portal-column-0"></div>
<!-- No gadgets message -->
<div>
<h3> Your tab is empty. </h3>
<h4> Please use link (<b>Add gadgets</b>) to prepare it yourself. </h4>
</div>
</div>
<!-- Hidden dialogs -->
<div id="add_new_tab_dialog" class="toggable_dialog">
<!-- Render pad columns -->
<div class="portal-column" id="portal-column-0"></div>
</div>
</div>
<h3> Add new tab </h3>
<span>Tab name</span>:
<input type="text" value="" name="pad_title"
id="new_pad_title"
onkeypress=" return addPadOnServerOnEnter(event, 'web_front', 'view')" />
<br />
<br />
<!-- Hidden dialogs -->
<div id="add_new_tab_dialog" class="toggable_dialog">
<button type="button" onclick="$('#add_new_tab_dialog').toggle();">Cancel</button>
<button type="button"
id="add_new_tab_dialog_add_button"
onclick="addPadOnServer('web_front', 'view')">Add</button>
<h3> Add new tab </h3>
<span>Tab name</span>:
<input type="text" value="" name="pad_title"
id="new_pad_title"
onkeypress=" return addPadOnServerOnEnter(event, 'web_front', 'view')" />
<br />
<br />
</div>
<button type="button" onclick="$('#add_new_tab_dialog').toggle();">Cancel</button>
<button type="button"
id="add_new_tab_dialog_add_button"
onclick="addPadOnServer('web_front', 'view')">Add</button>
<div id="rename_tab_dialog" class="toggable_dialog">
</div>
<h3> Rename tab </h3>
<span>Tab name</span>:
<input type="text" id="new_knowledge_pad_title"
name="knowledge_pad_title"
onkeypress="return renameKnowledgePadToServerOnEnter(event);"
value="Onglet 1" />
<br />
<br />
<div id="rename_tab_dialog" class="toggable_dialog">
<button type="button" onclick="$('#rename_tab_dialog').toggle();">Cancel</button>
<button type="button"
id="rename_tab_dialog_rename_button"
onclick="renameKnowledgePadToServer();"> Rename </button>
<h3> Rename tab </h3>
<span>Tab name</span>:
<input type="text" id="new_knowledge_pad_title"
name="knowledge_pad_title"
onkeypress="return renameKnowledgePadToServerOnEnter(event);"
value="Onglet 1" />
<br />
<br />
</div>
<button type="button" onclick="$('#rename_tab_dialog').toggle();">Cancel</button>
<button type="button"
id="rename_tab_dialog_rename_button"
onclick="renameKnowledgePadToServer();"> Rename </button>
<!-- Show message that default pad is being prepared. -->
<!-- Create (asynch) default pad. -->
</div>
<!-- Show message that default pad is being prepared. -->
<!-- Create (asynch) default pad. -->
</div>
</div>
</div>
</div></div>
</div>
</fieldset>
</div>
<div class=" main-right">
<fieldset class="widget">
</div>
</div></div>
</div>
</fieldset>
</div>
<div class=" main-right">
<fieldset class="widget">
<legend class="group_title"></legend>
<legend class="group_title"></legend>
<div class="field" title="">
<div class="field" title="">
<label> favorite_box </label>
<div class="input"><div >
<div class="favorite">
<a class="domain_selected"></a>
<label> favorite_box </label>
<div class="input"><div >
<div class="favorite">
<a class="domain_selected"></a>
<a href="#" onclick="javascript:window.location.reload()">Refresh</a>
</div>
</div></div>
<a href="#" onclick="javascript:window.location.reload()">Refresh</a>
</div>
</div></div>
</div>
</div>
<div class="field" title="">
<label> Toolbar </label>
<div class="field" title="">
<label> Toolbar </label>
<div class="input"><div >
<div class="toolbar">
<button name="WebSection_deleteObjectList:method"
type="submit"
class="delete">Delete</button>
<button name="#" type="submit" class="change_state">Change State</button>
</div>
</div></div>
<div class="input"><div >
<div class="toolbar">
<button class="delete"
onclick="getDocumentList().deleteSelectedDocuments()">Delete
</button>
<button name="#" class="change_state">Change State</button>
</div>
</div></div>
</div>
</div>
<div class="field" title="">
<div class="field" title="">
<label> Document List </label>
<label> Document List </label>
<div class="input">
<div class="input">
<div class="listbox-container">
<div class="listbox-container">
<div class="listbox-content listbox-content-fixed-width">
<div class="listbox-head">
<div class="listbox-content listbox-content-fixed-width">
<div class="listbox-head">
<div class="listbox-head-spacer"></div>
<div class="listbox-head-spacer"></div>
<div class="listbox-head-content">
<div class="listbox-head-content">
<!-- Listbox head (in left) -->
<div class="listbox-head-title">
<!-- Listbox head (in left) -->
<div class="listbox-head-title">
<!-- List tree mode choice -->
<!-- Listbox title -->
<div class="listbox-header-box">
<div class="listbox-title">
<a href="..." class="your_listbox_title">
<span>Document List</span></a>
</div>
<!-- List tree mode choice -->
<!-- Listbox title -->
<div class="listbox-header-box">
<div class="listbox-title">
<a href="..." class="your_listbox_title">
<span>Document List</span></a>
</div>
</div>
<!-- Number of rows in ERP5 mode -->
<!-- List style display mode -->
<!-- Number of rows in ERP5 mode -->
<!-- List style display mode -->
</div>
</div>
<!-- Listbox nagivation (in right) -->
<div class="listbox-head-navigation">
<!-- Listbox nagivation (in right) -->
<div class="listbox-head-navigation">
<!--Show search result in web mode-->
<div class="listbox-header-box">
<div class="listbox-number-of-records">
<!--Show search result in web mode-->
<div class="listbox-header-box">
<div class="listbox-number-of-records">
<!-- listbox start - stop number -->
<span id="page_start_number" class="listbox-current-page-start-number">1</span> -
<span id="page_stop_number" class="listbox-current-page-stop-number">...</span>
<span>of</span>
<!-- listbox start - stop number -->
<span id="page_start_number" class="listbox-current-page-start-number">1</span> -
<span id="page_stop_number" class="listbox-current-page-stop-number">...</span>
<span>of</span>
<!-- listbox total rows number -->
<span id="total_row_number" class="listbox-current-page-total-number your_listbox-current-page-total-number">
<a>?</a> records
</span>
<!-- listbox total rows number -->
<span id="total_row_number" class="listbox-current-page-total-number your_listbox-current-page-total-number">
<a>?</a> records
</span>
<!-- listbox selected rows number -->
<span id="selected_row_number" class="your_listbox-current-item-number">
- <a>0</a> items selected
</span>
<!-- listbox selected rows number -->
<span id="selected_row_number" class="your_listbox-current-item-number">
- <a>0</a> items selected
</span>
</div>
</div>
<!--Page navigation -->
</div>
</div>
<!--Page navigation -->
</div>
</div>
<div class="listbox-body">
<table class="listbox your_listbox your_listbox-table">
<thead>
<!--Column title -->
<tr class="listbox-label-line">
<!--Report tree-->
<!-- Anchor cell -->
<!-- Select cell -->
<th class="listbox-table-select-cell">
<input class="listbox-check-all" type="image"
name="your_listbox_checkAll:method"
value="1" alt="Check All"
title="Check All"
onclick="getDocumentList().checkAll()"
src="images/icons/checkall.png" />
&nbsp;
<input class="listbox-uncheck-all"
type="image"
name="your_listbox_uncheckAll:method"
value="1" alt="Uncheck All"
title="Uncheck All"
onclick="getDocumentList().resetSelectionList()"
src="images/icons/decheckall.png" />
</th>
<!-- Label column row -->
<th class="listbox-table-header-cell"></th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button" class="sort-button"
onclick=""
title="Title">
<span>Title</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button"
class="sort-button"
onclick=""
title="Sharing">
<span>Sharing</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button"
class="sort-button"
onclick=""
title="Date">
<span>Date</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
</tr>
<!--Search column input -->
</thead>
<!-- Stats -->
<tbody></tbody>
</table>
</div>
</div>
<div class="listbox-body">
<table class="listbox your_listbox your_listbox-table">
<thead>
<!--Column title -->
<tr class="listbox-label-line">
<!--Report tree-->
<!-- Anchor cell -->
<!-- Select cell -->
<th class="listbox-table-select-cell">
<input class="listbox-check-all" type="image"
name="your_listbox_checkAll:method"
value="1" alt="Check All"
title="Check All"
onclick="getDocumentList().checkAll()"
src="images/icons/checkall.png" />
&nbsp;
<input class="listbox-uncheck-all"
type="image"
name="your_listbox_uncheckAll:method"
value="1" alt="Uncheck All"
title="Uncheck All"
onclick="getDocumentList().resetSelectionList()"
src="images/icons/decheckall.png" />
</th>
<!-- Label column row -->
<th class="listbox-table-header-cell"></th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button" class="sort-button"
onclick=""
title="Title">
<span>Title</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button"
class="sort-button"
onclick=""
title="Sharing">
<span>Sharing</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
<th class="listbox-table-header-cell">
<!-- Button in normal view -->
<!-- Button in gadget mode -->
<button type="button"
class="sort-button"
onclick=""
title="Date">
<span>Date</span>
</button>
<!-- Icon showing sort order -->
<img src="images/ung/transparent-image.gif"
alt="Sort" class="sort-button"
title="Sort" />
</th>
</tr>
<!--Search column input -->
</thead>
<!-- Stats -->
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</fieldset>
</div>
</div>
</div></div>
</div>
</div>
</div></div>
</body>
</html>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment