Commit 62332ea3 authored by François Billioud's avatar François Billioud

beginning of mails code

parent 81888e4a
......@@ -5,7 +5,7 @@
<title></title>
<script type="text/javascript"> function reloc(url) {window.location = url;}</script>
</head>
<body onload="reloc('ung.html');">
<body onload="reloc('mail.html');">
</body>
</html>
/**
* This file provides classes needed by the mail editor
*/
/**
* Editors
* editors must implement the following methods :
* load : load the editor in the current page
* saveEdition : save the edition made by this editor to the current document
* loadContentFromDocument : display the content of the specified document in the editor
*/
var Xinha = function() {
this.name = "Xinha";
this.load = function() {
_editor_url = "xinha/";
getCurrentPage().include("xinha/XinhaCore.js","script");
getCurrentPage().include("xinha/config.js","script");
xinha_init();
}
this.saveEdition = function() {
getCurrentDocument().saveEdition(xinha_editors.input_area.getEditorContent());
}
this.loadContentFromDocument = function(doc) {
var setText = function() {xinha_editors.input_area.setEditorContent(doc.getContent());}
tryUntilSucceed(setText);
}
this.load();
}
/**
* Text documents
*
* editable documents must implements the following arguments and methods
* type : a unique type ID
* saveEdition : set the argument as the new content of the document. Change last modification time and display the changes
* setAsCurrentDocument : set the document as currentDocument in the local storage and display its properties in the current page
/**
* class JSONEMail
* @param arg : a json JSONEMail object to load
*/
var JSONEMail = function(arg) {
if(arg) {this.load(arg);}
else {
this.senders = {};
this.cc = {};
this.bcc = {};
this.object = "";
this.recipients = {};
this.date = currentTime();
this.content = "";
this.attachment = {};
}
}
JSONEMail.prototype = new UngObject();//inherits methods from JSONDocument
JSONEMail.prototype.load({
//setters,getters
getSenders: function() {return this.senders;},
getCC: function() {return this.cc;},
getBCC: function() {return this.bcc;},
getObject: function() {return this.object},
getRecipients: function() {return this.recipients;},
getDate: function() {return this.date;},
setSenders: function(senderList) {this.senders = senderList;},
setCC: function(ccList) {this.cc = ccList;},
setBCC: function(bccList) {this.bcc = bccList;},
setObject: function(object) {this.object = object;},
setRecipients: function(recipientList) {this.recipients = recipientList;},
setDate: function(date) {this.date = date;}
});
/**
* This file provides the javascript used to display the list of user's documents
*/
/* global variable */
/* the last modified document */
getCurrentDocumentID = function() {return localStorage.getItem("currentDocumentID");}
setCurrentDocumentID = function(ID) {return localStorage.setItem("currentDocumentID",ID);}
/**
* class EMailList
* This class provides methods to manipulate the list of emails of the current user
* @param arg : an eMailList json object to load
*/
var EMailList = function(arg) {
//List.call(this);
if(arg) {
this.load(arg);
this.load(new List(arg,JSONEMail));
this.selectionList = new List(arg.selectionList);//load methods of selectionList
} else {
List.call(this);
this.displayInformation = {};
this.displayInformation.page = 1;
this.selectionList = new List();
}
}
EMailList.prototype = new List();
EMailList.prototype.load({
removeEMail: function(doc) {
var i = this.find(doc);
this.get(i).remove()//delete the file
this.remove(i);//remove from the list
getCurrentStorage().save();//save changes
},
getSelectionList: function() {return this.selectionList;},
resetSelectionList: function() {
this.selectionList = new List();
//display consequences
for(var i=this.getDisplayInformation().first-1; i<this.getDisplayInformation().last; i++) {
$("tr td.listbox-table-select-cell input#"+i).attr("checked",false);//uncheck
}
$("span#selected_row_number a").html(0);//display the selected row number
},
checkAll: function() {
this.selectionList = new List();
for(var i=0; i<this.size(); i++) {
this.getSelectionList().add(this.get(i));
}
//display consequences
for(i=this.getDisplayInformation().first-1; i<this.getDisplayInformation().last; i++) {
$("tr td.listbox-table-select-cell input#"+i).attr("checked",true);//check
}
$("span#selected_row_number a").html(this.size());//display the selected row number
},
applyToSelection: function(action,location) {
var selection = this.getSelectionList();
var toApply;
switch(action) {
case "moveTo": toApply = getCurrentEMailList().label=="bin" ? function(mail) {this.removeEMail(mail)} : function(mail) {};break;
case "read": toApply=function(mail) {};break;
case "unread": toApply=function(mail) {};break;
}
while(!selection.isEmpty()) {
var mail = selection.pop();
toApply(mail);
}
this.resetSelectionList();
this.display();
},
getDisplayInformation: function() {return this.displayInformation;},
getDisplayedPage: function() {return this.getDisplayInformation().page;},
setDisplayedPage: function(index) {
this.displayInformation.page = index;
this.display();
},
changePage: function(event) {
var newPage = this.getDisplayedPage();
switch(event.target.className.split(" ")[0]) {
case "listbox_set_page":newPage = event.target.value;break;
case "listbox_next_page":newPage++;break;
case "listbox_previous_page":newPage--;break;
case "listbox_last_page":newPage = this.getDisplayInformation().lastPage;break;
case "listbox_first_page":newPage = 1;break;
}
this.setDisplayedPage(newPage);
},
/* display the list of documents in the web page */
displayContent: function() {
$("table.listbox tbody").html("");//empty the previous displayed list
for(var i=this.getDisplayInformation().first-1;i<this.getDisplayInformation().last;i++) {
var doc = this.get(i);
var ligne = new Line(doc,i);
ligne.updateHTML();
ligne.display();
if(this.getSelectionList().contains(doc)) {ligne.setSelected(true);}//check the box if selected
}
},
displayListInformation: function() {
if(this.size()>0) {
$("div.listbox-number-of-records").css("display","inline");
$("span#page_start_number").html(this.getDisplayInformation().first);
$("span#page_stop_number").html(this.getDisplayInformation().last);
$("span#total_row_number a").html(this.size());
$("span#selected_row_number a").html(this.getSelectionList().size());
}
else {$("div.listbox-number-of-records").css("display","none");}
},
displayNavigationElements: function() {
var lastPage = this.getDisplayInformation().lastPage;
var disp = function(element,bool) {
bool ? $(element).css("display","inline") : $(element).css("display","none");
}
disp("div.listbox-navigation",this.getDisplayInformation().lastPage>1);
if(lastPage>1) {
$("div.listbox-navigation input.listbox_set_page").attr("value",this.getDisplayedPage());
$("div.listbox-navigation span.listbox_last_page").html(lastPage);
disp("div.listbox-navigation button.listbox_first_page",this.getDisplayedPage()>1);
disp("div.listbox-navigation button.listbox_previous_page",this.getDisplayedPage()>1);
disp("div.listbox-navigation button.listbox_next_page",this.getDisplayedPage()<lastPage);
disp("div.listbox-navigation button.listbox_last_page",this.getDisplayedPage()<lastPage);
}
},
display: function() {
this.updateDisplayInformation();
this.displayContent();
this.displayListInformation();
this.displayNavigationElements();
},
/* update the document to be displayed */
updateDisplayInformation: function() {
var infos = this.getDisplayInformation();
infos.step = getCurrentUser().getSetting("displayPreferences"),//documents per page
infos.first = (infos.page-1)*infos.step + 1,//number of the first displayed document
infos.last = (this.size()<(infos.first+infos.step)) ? this.size() : infos.first+infos.step-1//number of the last displayed document
infos.lastPage = Math.ceil(this.size()/infos.step);
},
setAsCurrentDocumentList: function() {
this.display();
}
});
getEMailList = function() {
return getCurrentUser().getEMailList();
}
/**
* create a line representing a document in the main table
* @param mail : email to represent
* @param i : ID of the line (number)
*/
var Line = function(mail, i) {
this.email = mail;
this.ID = i;
this.html = Line.getOriginalHTML();
}
Line.prototype = {
getEMail: function() {return this.email;},
getID: function() {return this.ID;},
getType: function() {return this.document.getType() ? this.document.getType() : "other";},
getHTML: function() {return this.html;},
setHTML: function(newHTML) {this.html = newHTML;},
setSelected: function(bool) {$("tr td.listbox-table-select-cell input#"+this.getID()).attr("checked",bool)},
isSelected: function() {
return $("tr td.listbox-table-select-cell input#"+this.getID()).attr("checked");
},
/* add the document of this line to the list of selected documents */
addToSelection: function() {
getDocumentList().getSelectionList().add(this.getDocument());
},
/* remove the document of this line from the list of selected documents */
removeFromSelection: function() {
getDocumentList().getSelectionList().removeElement(this.getDocument());
},
/* check or uncheck the line */
changeState: function() {
this.isSelected() ? this.addToSelection() : this.removeFromSelection();
$("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 */
updateHTML: function() {
var line = this;
this.setHTML($(this.getHTML()).attr("class",this.getType())
.find("td.listbox-table-select-cell input")
.attr("id",this.getID())//ID
.click(function() {line.changeState();})//clic on a checkbox
.end()
.find("td.listbox-table-data-cell")
.click(function() {//clic on a line
setCurrentEMailID(line.getID());
startEMailEdition(line.getEMail())
})
.find("a.listbox-email-sender").html(this.getEMail().getSenders()).end()
.find("a.listbox-email-object").html(this.getEMail().getObject()[getCurrentUser().getSetting("language")]).end()
.find("a.listbox-email-date").html(this.getEMail().getLastModification()).end()
.end());
if(getEmail().getAttachment()) {
this.setHTML($("<img>",{src:"images/icons/attachment.png", css:{height:"1em"}}).appendTo(this.getHTML().find("a.listbox-email-attachment")));
}
},
/* add the line in the table */
display: function() {$("table.listbox tbody").append($(this.getHTML()));}
}
/* load the html code of a default line */
Line.loadHTML = function() {
loadFile("xml/xmlElements.xml", "html", function(data) {Line.originalHTML = $(data).find("email table tbody").html();});
return Line.originalHTML;
}
/* return the html code of a default line */
Line.getOriginalHTML = function() {return Line.originalHTML;}
/**
* create a new email and start an editor to edit it
*/
var createNewEMail = function() {
var newEMail = new EMail();
newEMail.save(function() {
getMailList().add(newEMail);
getCurrentStorage().save();
startEMailEdition(newEMail);
});
}
createMoveToMenu = function(labelList) {
$("div#move_to_list").html("");
for(var label in labelList) {
var span = JQuery("<span>",{text:label});
var div = $("<div>",{click: function() {getMailList().applyToSelection('moveTo',label)}});
$("<li>", {}).html(div.html(span)).appendTo("div#move_to_list");
}
}
/**
* Class IMAPStorage
* this class provides usual API to save/load/delete emails with imap
*/
var IMAPStorage = function(userName) {
getCurrentStorage().load({
loadEmail: function(ID) {},
saveEmail: function(mail,ID) {},
deleteEmail: function(ID) {}
});
}
/**
* Class Label
* used to load the methods of emails
*/
var Label = function(arg) {
this.load(arg ? new List(arg,JSONEMail) : new List());
}
/**
* Class MailBox
* this class provides API to send/receive and manipulate emails
*/
var initMailBox = function(user, mailProvider) {
getCurrentStorage().load({
userName: user,
provider: mailProvider,
saveEmail: function(mail,ID) {},
deleteEmail: function(ID) {},
sendEMail: function(mail) {},
loadEMail: function(ID) {}
});
}
if(arg) {
} else {
this.provider = "";
this.userName = "";
this.labelList = new List();
}
}
MailBox.prototype = new UNGProject();
MailBox.prototype.load({
getLabelList: function() {return this.labelList;},
getLabelList: function() {return this.labelList;},
getLabelList: function() {return this.labelList;},
getLabelList: function() {return this.labelList;},
});
getCurrentEMail = function() {
if(!currentEMail) {
currentEMail = new JSONEMail(JSON.parse(localStorage.getItem("currentEMail")));
}
return currentEMail;
}
setCurrentEMail = function(mail) {
currentEMail = mail;
localStorage.setItem("currentEMail",JSON.stringify(mail));
}
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="generator" content="ERP5 - Copyright (C) 2001 - 2008. All rights reserved." />
<meta name="description"
content="ERP5 Free Open Source ERP and CRM" />
<meta name="keywords" content="" />
<meta name="robots" content="index, follow" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>ERP5 | ERP5</title>
<link type="text/css" rel="stylesheet" href="css/ung.css" />
<link type="text/css" rel="stylesheet" href="css/jquery-ui.css" />
<link type="text/css" rel="stylesheet" href="css/gadget.css" />
<script type="text/javascript" src="js/jquery/jquery.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui.js"></script>
<script type="text/javascript" src="js/tools.js"></script>
<script type="text/javascript" src="js/theme.js"></script>
<script type="text/javascript" src="js/mail.js"></script>
<link rel="icon" type="image/x-icon"
href="images/ung/favicon.ico" />
<link rel="shortcut icon" type="image/x-icon"
href="images/ung/favicon.ico" />
<script type="text/javascript">
var init = function() {
//delete localStorage.documentList;//delete the list for tests
setCurrentPage(new Page("mail"));//provide methods on the page
getCurrentStorage().getUser().setAsCurrentUser();//initialize the user
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().updateDocumentInformation(getCurrentDocumentID());
delete localStorage.currentDocumentID;
getCurrentStorage().save();
}
waitBeforeSucceed(//display the list of documents
function(){return Line.loadHTML()},function() {
getDocumentList().resetSelectionList();
getDocumentList().updateDisplayInformation();
getDocumentList().display();
resize();}//hack for a bug with firefox
);
}
$(window).resize(resize);
$(document).ready(init);
</script>
</head>
<body>
<div class="container">
<div class="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="field" title="">
<label> navigation_box </label>
<div class="input"><div >
<a class="email" href="/ung/mail">Email</a>
<a class="document" href="mail.html">Documents</a>
<a class="calendar" href="/ung/calendar">Calendar</a>
</div></div>
</div>
</fieldset>
</div>
<div class=" navigation-right">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<label> your_language </label>
<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>
</div>
</div></div>
</div>
<div class="field" title="">
<label> user_login_box </label>
<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 id="sign_out" href="login.html" onclick="signOut()">Sign out</a>
</div></div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="header">
<!-- Each aggregate of groups is a div wrapper -->
<div class="wrapper" id="wrapper_header">
<div class=" header-left">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<label> search_bar </label>
<div class="input"><div >
<a class="ung_docs" href="mail.html">
<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 Mail" name="WebSection_viewSearchResultList:method" />
</form>
</div></div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="main">
<!-- Each aggregate of groups is a div wrapper -->
<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">
<input type="button" id="compose_mail" class="ung_button" name="Compose Mail" value="Compose Mail" />
<div class="file-selection">
<div class="file-quick-search">
<div class="listbox-tree">
<!-- Domain Report Tree mode -->
<div class="listbox-domain-tree-container">
<!-- 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"
id="inbox"
name="unfoldDomain:method"
class="tree-closed current_folder"
value="ung_domain/all_documents.0">Inbox</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">Sent Mail</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">Drafts</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">Spam</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">Bin</button>
</td>
</tr>
<tr>
<td colspan="1" class="listbox-table-domain-tree-cell">
<button type="submit"
name="unfoldDomain:method"
class="tree-open"
value="ung_domain/shared.0">Labels :</button>
<ul>
<li class="label">
test1
</li>
<li class="label">
test2
</li>
</ul>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
</div>
</fieldset>
</div>
<div class=" main-right">
<fieldset class="widget">
<legend class="group_title"></legend>
<div class="field" title="">
<label> favorite_box </label>
<div class="input"><div >
<div class="favorite">
<a class="domain_selected"></a>
<a href="mail.html">Refresh</a>
</div>
</div></div>
</div>
<div class="field" title="">
<label> Toolbar </label>
<div class="input"><div >
<div class="toolbar">
<button class="delete ung_button"
onclick="getMailList().applyToSelection('delete')">Delete
</button>
<button name="#" class="change_state ung_button">Change State</button>
<div id="change_state" class="change_state option_menu">
<ul><li>
<div class="fix ung_button">
<span>Change State</span>
<img src="images/ung/arrow.png"/>
</div>
<ul>
<li>
<div onclick="getMailList().applyToSelection('read')">
<span>Mark as read</span>
</div>
</li>
<li>
<div onclick="getMailList().applyToSelection('unread')">
<span>Mark as unread</span>
</div>
</li>
<li>
<div onclick="getMailList().applyToSelection('moveTo','spam')">
<span>Spam</span>
</div>
</li>
<li>
<div onclick="getMailList().applyToSelection('moveTo','bin')">
<span>Delete</span>
</div>
</li>
</ul>
</li></ul>
</div>
<div id="move_to" class="move_to option_menu">
<ul><li>
<div class="fix ung_button">
<span>Move to</span>
<img src="images/ung/arrow.png"/>
</div>
<ul id="move_to_list">
<li>
<div onclick="getEMailList().applyToSelection('moveTo','inbox')">
<span>Inbox</span>
</div>
</li>
<li>
<div onclick="getEMailList().applyToSelection('moveTo','send')">
<span>Sent Mail</span>
</div>
</li>
<li>
<div onclick="getEMailList().applyToSelection('moveTo','spam')">
<span>Spam</span>
</div>
</li>
<li>
<div onclick="getEMailList().applyToSelection('moveTo','bin')">
<span>Delete</span>
</div>
</li>
</ul>
</li></ul>
</div>
<div class="listbox-navigation">
<button class="listbox_first_page your_listbox_first_page ung_button" onclick="getDocumentList().changePage(event)">
<span class="image"> </span>
</button>
<button class="listbox_previous_page your_listbox_previous_page ung_button" onclick="getDocumentList().changePage(event)">
<span class="image"> </span>
</button>
<input class="listbox_set_page your_listbox_set_page" value="1" size="1" onkeypress="if(event.keyCode==13){getDocumentList().changePage(event)}" />
/<span class="listbox_last_page">1</span>
<button class="listbox_next_page your_listbox_next_page ung_button" onclick="getDocumentList().changePage(event)">
<span class="image"> </span>
</button>
<button class="listbox_last_page your_listbox_last_page ung_button" onclick="getDocumentList().changePage(event)">
<span class="image"> </span>
</button>
</div>
<div class="listbox-head">
<div class="listbox-head-spacer"></div>
<div class="listbox-head-content">
<!-- 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>
</div>
</div>
<!-- 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">
<!-- 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 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>
</div>
</div>
</div></div>
</div>
<div class="field" title="">
<label> Document List </label>
<div class="input">
<div class="listbox-container">
<div class="listbox-content listbox-content-fixed-width">
<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>
</fieldset>
</div>
</div>
</div></div>
</body>
</html>
\ No newline at end of file
......@@ -80,22 +80,48 @@
</td>
<td class="listbox-table-data-cell">
<a class="listbox-document-icon">
<img src="images/icons/document.png"/>
<img src=""/>
</a>
</td>
<td class='listbox-table-data-cell'>
<a class="listbox-document-title">Web Page</a>
<a class="listbox-document-title"></a>
</td>
<td class="listbox-table-data-cell">
<a class="listbox-document-state">Deleted</a>
<a class="listbox-document-state"></a>
</td>
<td class="listbox-table-data-cell">
<a class="listbox-document-date">2011/05/31&nbsp;&nbsp;&nbsp;11:44</a>
<a class="listbox-document-date"></a>
</td>
</tr>
</tbody>
</table>
</line>
<mail>
<table>
<tbody>
<tr>
<td class="listbox-table-select-cell">
<input type="checkbox"/>
</td>
<td class="listbox-table-data-cell">
<a class="listbox-email-attachment">
</a>
</td>
<td class='listbox-table-data-cell'>
<a class="listbox-email-sender"></a>
</td>
<td class="listbox-table-data-cell">
<a class="listbox-email-object"></a>
</td>
<td class="listbox-table-data-cell">
<a class="listbox-email-date"></a>
</td>
</tr>
</tbody>
</table>
</mail>
</root>
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