Commit c2112947 authored by François Billioud's avatar François Billioud

corrects bugs with the load of document list

parent 275cb9a4
......@@ -33,14 +33,10 @@ SVGEditor = function() {
* setAsCurrentDocument : set the document as currentDocument in the local storage and display its properties in the current page
*/
JSONDocument.prototype.type = "text";
JSONDocument.prototype.type = "image";
JSONDocument.prototype.saveEdition = function(content) {
this.setLastUser(getCurrentUser().getName());
this.setContent(content);
this.setLastModification(getCurrentTime());
this.setAsCurrentDocument();
}
JSONDocument.prototype.setAsCurrentDocument = function() {
getCurrentPage().displayDocumentInformation(this);
setCurrentDocument(this);
}
......@@ -21,9 +21,32 @@ function logIntoDav(wallet) {
function initStorage(wallet) {
if(!wallet.provider) {//local storage
Storage.currentStorage = new LocalStorage(wallet.userName);
/**
* load JIO file from a DAV and create and return the JIO object
* This function will be replaced. The aim is to load JIO in more various ways, and use JIO.initialize after
* @param userName : name of the user
* @param location : server location
* @param applicant : (optional) information about the person/application needing this JIO object (allow limited access)
* @return JIO object
*/
(function initializeFromDav(userName, location, applicant) {
//get the user personal JIO file
$.ajax({
url: location+"/dav/"+userName+"/"+applicant.ID+"/"+"jio.json",//we could use userAdress instead...
type: "GET",
async: false,
dataType: "text",
headers: {Authorization: "Basic "+Base64.encode(userName+":"+applicant.password)},
fields: {withCredentials: "true"},
success: function(jioContent){
Storage.create(jioContent);
},
error: function(type) {alert("Error "+type.status+" : fail while trying to load jio.json");}
});
return JIO;
})(wallet.userName, wallet.storageLocation, {"ID":"www.ungproject.com", "password":wallet.applicationPassword});
} else {
Storage.currentStorage = new JIOStorage(wallet);
Storage.create('{"type":"local","userName":"'+wallet.userName+'"}');
}
}
......
......@@ -129,9 +129,6 @@ JSONDocument.prototype.saveEdition = function(content) {
this.setLastUser(getCurrentUser().getName());
this.setContent(content);
this.setLastModification(getCurrentTime());
this.setAsCurrentDocument();
}
JSONDocument.prototype.setAsCurrentDocument = function() {
getCurrentPage().displayDocumentInformation(this);
setCurrentDocument(this);
}
......@@ -26,12 +26,27 @@ var Page = {
if(page!="ung" &&page!="mail" && page !=undefined) {
this.loadXML("xml/"+page+".xml");
} else {
//load the user and the documentList in the page (wait for the storage being ready)
getCurrentStorage().addWaiter(function() {
getCurrentUser().setAsCurrentUser();
//display user information when the storage is ready
if (getCurrentStorage()[Storage.USER_READY]) {
Page.displayUserInformation(getCurrentUser());
} else {
getCurrentStorage().addEventHandler(function() {
Page.displayUserInformation(getCurrentUser());
getCurrentDocumentList()
},Storage.USER_READY);
}
//display the document list when the line factory is ready
Line.loadHTML(function() {
if (getCurrentStorage()[Storage.LIST_READY]) {
getCurrentDocumentList().display();
} else {
getCurrentStorage().addEventHandler(function() {
getCurrentDocumentList().display();
},Storage.LIST_READY);
}
});
}
},
//getters
getName: function() {return this.name;},
......@@ -59,15 +74,16 @@ var Page = {
$(dependencies).find("scriptfile").each(function() {page.include($(this).text(),"script");});//includes js
// load the user, the editor and the document in the page (wait for the storage being ready)
getCurrentStorage().addWaiter(function() {
getCurrentUser().setAsCurrentUser();
this.loadEditor();
getCurrentDocument().setAsCurrentDocument();
getCurrentStorage().addEventHandler(function() {
Page.displayUserInformation(getCurrentUser());
Page.displayDocumentInformation(getCurrentDocument());
Page.loadEditor();
},Storage.USER_READY);
});
},
/* include a javascript or a css file */
// could be written better
include: function(file,type) {
var object = null;
switch(type) {
......@@ -147,9 +163,8 @@ function getCurrentPage() {return Page;}
var User = function(arg) {
if(arg) {
this.load(arg);
if(window.DocumentList) {this.documentList = new DocumentList(arg.documentList);}
if(window.LabelList) {this.labelList = new LabelList(arg.labelList);}
if(window.GroupList) {this.groupList = new GroupList(arg.groupList);}
if(window.LabelList) {this.labelList = new LabelList(arg.labelList);}// labels of the user
if(window.GroupList) {this.groupList = new GroupList(arg.groupList);}// contact groups of the user
}
else {
this.name = "UNG";//default name
......@@ -172,16 +187,8 @@ User.prototype.load({//add methods thanks to the UngObject.load method
getSetting: function(key) {return this.settings[key];},
setSetting: function(key,value) {this.settings[key] = value;},
getSettings: function() {return this.settings;},
getDocumentList: function() {return this.documentList;},
setDocumentList: function(list) {this.documentList = list;},
getStorageLocation: function() {return this.storageLocation;},
setAsCurrentUser: function() {
getCurrentPage().displayUserInformation(this);
getCurrentStorage().setUser(this);
if(getCurrentPage().getName()=="ung") this.getDocumentList().setAsCurrentDocumentList();
}
getStorageLocation: function() {return this.storageLocation;}
});
getCurrentUser = function () {
......@@ -193,189 +200,55 @@ getCurrentUser = function () {
/**
* Class Storage
* this class provides usual API to save/load/delete elements
* @param type : "local" to save in localStorage, or "JIO" for remote storage
* Storage
* this element provides usual API to save/load/delete elements
*/
var Storage = function(type) {
var Storage = new UngObject();
Storage.load({
/* create the storage from storage. Used in the login page */
create: function (jioFileContent) {
this.jio = JIO.initialize(jioFileContent,{"ID":"www.ungproject.com"});
Storage.currentStorage = this;
this.type = type;
this.pendingList = [];
//(re)initialize events
this.userReady = false;
}
Storage.prototype = new UngObject();
Storage.prototype.load({
getType: function() {return this.type;},
getUser: function() {return this.user;},
setUser: function(user) {
this.user = user;
user.setAsCurrentUser();
this.userName = user.name;
fireEvent(Storage.userReady);
this.save();
},
updateUser: function() {localStorage[this.getUser().getName()] = JSON.stringify(this.getUser());},
save: function() {
this.updateUser();
localStorage.setItem("currentStorage", JSON.stringify(this));
},
addWaiter: function(action, expectedEvent) {
this[expectedEvent] ? action() : this.pendingList.push({action:action,expectedEvent:expectedEvent});
},
fireEvent: function(event) {
for (var i=0; i<this.pendingList.length; i++) {
var waiter = this.pendingList[i];
if(waiter.expectedEvent===event) {
waiter.action.apply(this, waiter.argument);
this.pendingList(i,1);
i--;
}
}
}
});
Storage.initialize = function () {
var dataStorage = JSON.parse(localStorage.getItem("currentStorage"));
if(!dataStorage) {window.location.href = "login.html";}//if it's the first connexion
if(dataStorage.type == "local") {
Storage.currentStorage = new LocalStorage(dataStorage.userName);
} else {
Storage.currentStorage = new JIOStorage(dataStorage);
}
}
Storage.USER_READY = "userReady"; // value of the USER_READY event
getCurrentStorage = function () {
return Storage.currentStorage;
}
/**
* Class LocalStorage
* this class provides usual API to save/load/delete documents on the localStorage
*/
var LocalStorage = function(userName) {
Storage.call(this,"local");
if(userName) {
var loaded = this.loadUser(userName)//load an existing user
if(!loaded) {//create a new user if there was no such one
var user = new User();
user.setName(userName);
user.documents = {};
this.setUser(user);
}
}
}
LocalStorage.prototype = new Storage();
LocalStorage.prototype.load({
/* try to load the user information in the storage and save it in the
* storage instance.
* @param userName : the name of the user
* @return : true if the user existed and has been loaded, false otherwise
*/
loadUser: function(userName) {
try{
if(!localStorage[userName]) {throw "noSuchUser";}
this.setUser(new User(JSON.parse(localStorage[userName])));
return true;
} catch(e) {
if(e!="noSuchUser") {alert(e);}
return false
}
},
getDocument: function(file, instruction) {
var doc = new JSONDocument(this.getUser().documents[file]);
if(instruction) instruction(doc);
return doc;
},
getDocumentList: function() {
return this.getUser().getDocumentList();
},
saveDocument: function(doc, file, instruction) {
this.user.documents[file] = doc;
this.save();
if(instruction) instruction();
},
deleteDocument: function(file, instruction) {
delete this.user.documents[file];
this.save();
if(instruction) instruction();
}
});
/**
* Class JIO
* this class provides usual API to save/load/delete documents on a remote storage
*/
var JIOStorage = function(arg) {
Storage.call(this,"JIO");
if(arg.jio && arg.jio.jioFileContent) {
//recreate the storage from the localStorage (arg = localStorage.currentStorage)
this.jio = JIO.initialize(arg.jio.jioFileContent, {"ID":"www.ungproject.com"});
this.setUser(new User(arg.user));
waitBeforeSucceed(JIO.isReady,this.save);
} else {
//load jio from the dav storage
this.jio = initializeFromDav(arg.userName, arg.storageLocation, {"ID":"www.ungproject.com", "password":arg.applicationPassword});
//try to load user parameters
var storage = this;
var option = {
success: function(data) {//success
storage.setUser(new User(JSON.parse(data)));
storage.user.storageLocation = arg.storageLocation;
storage.save();
},
errorHandler: function(errorEvent) {//fail
if(errorEvent.status==404){//create a new user if there was no such one
var user = new User();
user.setName(arg.userName);
user.setName(jioFileContent.userName);
storage.setUser(user);
storage.user.storageLocation = arg.storageLocation;
storage.user.storageLocation = jioFileContent.location;
storage.save();
}
},
asynchronous: false
}
JIO.loadDocument(arg.userName+".profile", option);
}
JIO.loadDocument(jioFileContent.userName+".profile", option);
/**
* load JIO file from a DAV and create and return the JIO object
* This function will be replaced. The aim is to load JIO in more various ways, and use JIO.initialize after
* @param userName : name of the user
* @param location : server location
* @param applicant : (optional) information about the person/application needing this JIO object (allow limited access)
* @return JIO object
*/
function initializeFromDav(userName, location, applicant) {
//get the user personal JIO file
$.ajax({
url: location+"/dav/"+userName+"/"+applicant.ID+"/"+"jio.json",//we could use userAdress instead...
type: "GET",
async: false,
dataType: "text",
headers: {Authorization: "Basic "+Base64.encode(userName+":"+applicant.password)},
fields: {withCredentials: "true"},
success: function(jioContent){
JIO.initialize(jioContent,applicant);
},
error: function(type) {alert("Error "+type.status+" : fail while trying to load jio.json");}
});
return JIO;
}
}
JIOStorage.prototype = new Storage();
JIOStorage.prototype.load({
/* initialize the storage from the localStorage */
initialize: function () {
var dataStorage = JSON.parse(localStorage.getItem("currentStorage"));
if(!dataStorage) {window.location.href = "login.html";}//if it's the first connexion
this.jio = JIO.initialize(dataStorage.jio.jioFileContent, {"ID":"www.ungproject.com"});
Storage.currentStorage = this;
this.setUser(new User(dataStorage.user));
},
USER_READY: "userReady", // value of the USER_READY event
LIST_READY: "listReady", // value of the LIST_READY event
getJIO: function() {return this.jio;},
loadUser: function(userName) {//warning no return value
var storage = this;
var option = {
success: function(data) {storage.setUser(new User(JSON.parse(data)));},
success: function(data) {Storage.setUser(new User(JSON.parse(data)));},
errorHandler: function(errorEvent) {if(errorEvent.status==404){}}
}
JIO.loadDocument(userName+".profile", option);
......@@ -399,21 +272,49 @@ JIOStorage.prototype.load({
JIO.saveDocument(JSON.stringify(doc), fileName, option);
},
deleteDocument: function(file, instruction) {
var option = {option: {success: instruction}};
var option = {success: instruction};
JIO.deleteDocument(file, option);
},
save: function() {
getDocumentList: function(instruction) {
instruction(this.documentList());
return this.documentList;
},
updateDocumentList: function() {
var option = {
success: function(list) {
delete list[getCurrentUser().getName()+".profile"];//remove the profile file
getCurrentStorage().documentList = list;
fireEvent(Storage.LIST_READY);
}
}
JIO.getDocumentList(option);
},
save: function() { // update and save user information in the localStorage
this.updateUser();
this.saveDocument(this.user,this.user.getName()+".profile",function() {
localStorage.setItem("currentStorage",JSON.stringify(this));
});
}
});
},
getUser: function() {return this.user;},
setUser: function(user) {
this.user = user;
this.userName = user.getName();
fireEvent(Storage.USER_READY);
this.updateDocumentList();
getCurrentStorage().save();
},
fireEvent: function(event) {
Storage[event] = true;
UngObject.prototype.fireEvent(event);
},
updateUser: function() {localStorage[this.getUser().getName()] = JSON.stringify(this.getUser());}
});
getCurrentStorage = function () {
return Storage.currentStorage;
}
......@@ -481,7 +382,7 @@ getCurrentDocument = function() {
}
setCurrentDocument = function(doc) {
localStorage.setItem("currentDocument",JSON.stringify(doc));
this.currentDocument = doc;
Document.currentDocument = doc;
}
/**
......@@ -565,15 +466,6 @@ JSONDocument.prototype.states = {
deleted:{"fr":"Supprimé","en":"Deleted"}
}
setCurrentDocument = function(doc) {
currentDocument = doc;
localStorage.setItem("currentDocument",JSON.stringify(doc));
}
......
......@@ -54,6 +54,31 @@ UngObject.prototype.copy = function() {
return copied;
}
/*
* add an event handler executed when the fireEvent function is called
* @param handler : function to execute when the event occures
* @param event : the event to consider
* @param once : if set to true, the handler is executed only once
*/
UngObject.prototype.addEventHandler = function (handler, event, once) {
if(!this.listenerList.length) { this.listnerList = [] }
this.listernerList.push({handler:handler,event:event,once:once});
}
/* fire an event through all the listeners of the object */
UngObject.prototype.fireEvent = function (event) {
for (var i=0; i<this.listenerList.length; i++) {
var listener = this.listenerList[i];
if(listener.event == event) {
listener.handler(event);
if(listener.once) { // remove the listener if supposed to been executed only once
this.listenerList.splice(i,1);
i--;
}
}
}
}
/**
* convert an object into an array easier to manipulate
* @param object : the object to convert
......
......@@ -14,7 +14,10 @@ setCurrentDocumentID = function(ID) {return localStorage.setItem("currentDocumen
* the detailedList object is the synchronized list containing more detailed information about documents
* @param documentList : documents information loaded from the storage
*/
var DocumentList = function(documentList) {
var DocumentList = {
inititalize: function() {
var data = lo
},
this.detailedList = {}
if(documentList) {
for(var doc in documentList) {
......@@ -193,7 +196,7 @@ DocumentList.prototype.load({
}
});
getDocumentList = function() {
return getCurrentUser().getDocumentList();
return getCurrentStorage().getDocumentList();
}
......
<?xml version="1.0" encoding="UTF-8"?>
<root>
<title> Web Table - Web Table </title>
<content>
<label>
Contenu de la page
</label>
<div class="input">
<link rel="stylesheet" href="js/jquery/plugin/sheet/jquery.sheet.css" type="text/css" />
<link rel="stylesheet" href="jquery_sheet_editor/jquery.sheet.erp5.css" type="text/css" />
<link rel="stylesheet" href="js/jquery/plugin/colorpicker/jquery.colorPicker.css" type="text/css" />
<!--<link rel="stylesheet" href="js/jquery/plugin/colorpicker/menu.css" type="text/css" />-->
<div id="jQuerySheet0" style="height: 400px;"></div>
<span id="inlineMenu" style="display: none;">
<span>
<a href="#" onclick="sheetInstance.controlFactory.addRow(); return false;" title="Insert Row After Selected">
<img alt="Insert Row After Selected" src="jquery_sheet_editor/jquery_sheet_image/sheet_row_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addRow(null, true); return false;" title="Insert Row Before Selected">
<img alt="Insert Row Before Selected" src="jquery_sheet_editor/jquery_sheet_image/sheet_row_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addRow(null, null, ':last'); return false;" title="Add Row At End">
<img alt="Add Row" src="jquery_sheet_editor/jquery_sheet_image/sheet_row_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addRowMulti(); return false;" title="Add Multi-Rows">
<img alt="Add Multi-Rows" src="jquery_sheet_editor/jquery_sheet_image/sheet_row_add_multi.png" />
</a>
<a href="#" onclick="sheetInstance.deleteRow(); return false;" title="Delete Row">
<img alt="Delete Row" src="jquery_sheet_editor/jquery_sheet_image/sheet_row_delete.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addColumn(); return false;" title="Insert Column After Selected">
<img alt="Insert Column After Selected" src="jquery_sheet_editor/jquery_sheet_image/sheet_col_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addColumn(null, true); return false;" title="Insert Column Before Selected">
<img alt="Insert Column Before Selected" src="jquery_sheet_editor/jquery_sheet_image/sheet_col_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addColumn(null, null, ':last'); return false;" title="Add Column At End">
<img alt="Add Column At End" src="jquery_sheet_editor/jquery_sheet_image/sheet_col_add.png" />
</a>
<a href="#" onclick="sheetInstance.controlFactory.addColumnMulti(); return false;" title="Insert Multi-Columns">
<img alt="Add Multi-Columns" src="jquery_sheet_editor/jquery_sheet_image/sheet_col_add_multi.png" />
</a>
<a href="#" onclick="sheetInstance.deleteColumn(); return false;" title="Delete Column">
<img alt="Delete Column" src="jquery_sheet_editor/jquery_sheet_image/sheet_col_delete.png" />
</a>
<a href="#" onclick="sheetInstance.getTdRange(null, sheetInstance.obj.formula().val()); return false;" title="Get Cell Range">
<img alt="Get Cell Range" src="jquery_sheet_editor/jquery_sheet_image/sheet_get_range.png" />
</a>
<a href="#" onclick="sheetInstance.deleteSheet(); return false;" title="Delete Current Sheet">
<img alt="Delete Current Sheet" src="jquery_sheet_editor/jquery_sheet_image/table_delete.png" />
</a>
<a href="#" onclick="sheetInstance.calc(sheetInstance.i); return false;" title="Refresh Calculations">
<img alt="Refresh Calculations" src="jquery_sheet_editor/jquery_sheet_image/arrow_refresh.png" />
</a>
<a href="#" onclick="sheetInstance.cellFind(); return false;" title="Find">
<img alt="Find" src="jquery_sheet_editor/jquery_sheet_image/find.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleBold'); return false;" title="Bold">
<img alt="Bold" src="jquery_sheet_editor/jquery_sheet_image/text_bold.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleItalics'); return false;" title="Italic">
<img alt="Italic" src="jquery_sheet_editor/jquery_sheet_image/text_italic.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleUnderline', 'styleLineThrough'); return false;" title="Underline">
<img alt="Underline" src="jquery_sheet_editor/jquery_sheet_image/text_underline.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleLineThrough', 'styleUnderline'); return false;" title="Strikethrough">
<img alt="Strikethrough" src="jquery_sheet_editor/jquery_sheet_image/text_strikethrough.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleLeft', 'styleCenter styleRight'); return false;" title="Align Left">
<img alt="Align Left" src="jquery_sheet_editor/jquery_sheet_image/text_align_left.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleCenter', 'styleLeft styleRight'); return false;" title="Align Center">
<img alt="Align Center" src="jquery_sheet_editor/jquery_sheet_image/text_align_center.png" />
</a>
<a href="#" onclick="sheetInstance.cellStyleToggle('styleRight', 'styleLeft styleCenter'); return false;" title="Align Right">
<img alt="Align Right" src="jquery_sheet_editor/jquery_sheet_image/text_align_right.png" />
</a>
<a href="#" onclick="sheetInstance.fillUpOrDown(); return false;" title="Fill Down">
<img alt="Fill Down" src="jquery_sheet_editor/jquery_sheet_image/arrow_down.png" />
</a>
<a href="#" onclick="sheetInstance.fillUpOrDown(true); return false;" title="Fill Up">
<img alt="Fill Up" src="jquery_sheet_editor/jquery_sheet_image/arrow_up.png" />
</a>
<span class="colorPickers">
<input title="Foreground color" class="colorPickerFont" style="background-image: url('jquery_sheet_editor/jquery_sheet_image/palette.png') ! important; width: 16px; height: 16px;" />
<input title="Background Color" class="colorPickerCell" style="background-image: url('jquery_sheet_editor/jquery_sheet_image/palette_bg.png') ! important; width: 16px; height: 16px;" />
</span>
<a href="#" onclick="sheetInstance.obj.formula().val('=HYPERLINK(\'' + prompt('Enter Web Address', 'http://www.visop-dev.com/') + '\')').keydown(); return false;" title="HyperLink">
<img alt="Web Link" src="jquery_sheet_editor/jquery_sheet_image/page_link.png" />
</a>
<a href="#" onclick="sheetInstance.toggleFullScreen(); $('#lockedMenu').toggle(); return false;" title="Toggle Full Screen">
<img alt="Web Link" src="jquery_sheet_editor/jquery_sheet_image/arrow_out.png" />
</a>
</span>
</span></div>
</content>
<dependencies>
<scriptfile>js/jquery/plugin/sheet/jquery.sheet.js</scriptfile>
<scriptfile>js/jquery/plugin/mbmenu/mbMenu.min.js</scriptfile>
<scriptfile>js/jquery/plugin/jqchart/jgcharts.min.js</scriptfile>
<scriptfile>js/jquery/plugin/colorpicker/jquery.colorPicker.min.js</scriptfile>
<scriptfile>js/jquery/plugin/elastic/jquery.elastic.min.js</scriptfile>
<scriptfile>js/jquery/plugin/sheet/jquery.sheet.js</scriptfile>
<scriptfile>js/table-editor.js</scriptfile>
<stylefile>js/jquery/plugin/sheet/jquery.sheet.css</stylefile>
<stylefile>css/table.css</stylefile>
<stylefile>js/jquery/plugin/colorpicker/jquery.colorPicker.css</stylefile>
<stylefile>css/jquery-ui.css</stylefile>
</dependencies>
<D:multistatus xmlns:D="DAV:">
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype>
<D:collection></D:collection>
</lp1:resourcetype>
<lp1:creationdate>2011-08-16T09:01:53Z</lp1:creationdate>
<lp1:getlastmodified>Tue, 16 Aug 2011 09:01:53 GMT</lp1:getlastmodified>
<lp1:getetag>"111e80-1000-4aa9ba18b716d"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
<D:getcontenttype>httpd/unix-directory</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168464706</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:00:56Z</lp1:creationdate>
<lp1:getcontentlength>208</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:00:56 GMT</lp1:getlastmodified>
<lp1:getetag>"11253b-d0-4aa51db5ab821"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168465680</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:04:23Z</lp1:creationdate>
<lp1:getcontentlength>355</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:04:23 GMT</lp1:getlastmodified>
<lp1:getetag>"112526-163-4aa51e7bcc361"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168467756</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:01:39Z</lp1:creationdate>
<lp1:getcontentlength>394</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:01:39 GMT</lp1:getlastmodified>
<lp1:getetag>"11252b-18a-4aa51ddeae881"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/.htpasswd</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:19:47Z</lp1:creationdate>
<lp1:getcontentlength>22</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:19:47 GMT</lp1:getlastmodified>
<lp1:getetag>"107100-16-4aa521ed1e601"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168693571</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:10:55Z</lp1:creationdate>
<lp1:getcontentlength>4235</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:10:55 GMT</lp1:getlastmodified>
<lp1:getetag>"112547-108b-4aa51ff1b1fc1"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313169076040</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:11:03Z</lp1:creationdate>
<lp1:getcontentlength>209</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:11:03 GMT</lp1:getlastmodified>
<lp1:getetag>"112545-d1-4aa51ff91e601"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/.htaccess</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-16T09:01:53Z</lp1:creationdate>
<lp1:getcontentlength>205</lp1:getcontentlength>
<lp1:getlastmodified>Tue, 16 Aug 2011 09:01:53 GMT</lp1:getlastmodified>
<lp1:getetag>"107017-cd-4aa9ba18b716d"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168575613</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:04:08Z</lp1:creationdate>
<lp1:getcontentlength>2554</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:04:08 GMT</lp1:getlastmodified>
<lp1:getetag>"11253a-9fa-4aa51e6ce6bc1"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/1313168468871</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:00:56Z</lp1:creationdate>
<lp1:getcontentlength>216</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:00:56 GMT</lp1:getlastmodified>
<lp1:getetag>"11253c-d8-4aa51db5b8341"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/dav/storage/www.ungproject.com/jio.profile</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype></lp1:resourcetype>
<lp1:creationdate>2011-08-12T17:19:49Z</lp1:creationdate>
<lp1:getcontentlength>1986</lp1:getcontentlength>
<lp1:getlastmodified>Fri, 12 Aug 2011 17:19:49 GMT</lp1:getlastmodified>
<lp1:getetag>"11253f-7c2-4aa521ee24181"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope>
<D:exclusive></D:exclusive>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope>
<D:shared></D:shared>
</D:lockscope>
<D:locktype>
<D:write></D:write>
</D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery></D:lockdiscovery>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
</root>
<link rel="stylesheet" href="css/jquery.sheet.erp5.css" type="text/css" />
\ 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