{
return WC->summ;
}
-int Conditional_ROOM_DISPLAY_MSG(StrBuf *Target, WCTemplputParams *TP) {
- wcsession *WCC = WC;
- IterateStruct *ITC = CCTX;
- int num_inset = ITC->n;
- if ((num_inset >= WC->startmsg) && (WCC->num_displayed <= WCC->maxmsgs)) {
-
- WCC->num_displayed = WCC->num_displayed+1;
- return 1; /* Pass GO, collect $200 */
- }
- return 0;
-}
-int Conditional_MAIL_SUMM_LASTMSG(StrBuf *Target, WCTemplputParams *TP) {
- IterateStruct *ITC = CCTX;
- int is_last_n = ITC->LastN;
-/*
- //GetHash(WC->vars, HKEY("ITERATE:N"), (void *)&n_dsubst);
- //num_inset = n_dsubst->lvalue;
- */
- /* Is the num_displayed higher than maxmsgs? OR last in iterator */
- return ((WC->num_displayed > WC->maxmsgs) || (is_last_n == 1));
-}
void examine_time(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
{
Msg->date = StrTol(HdrLine);
RegisterNamespace("MAIL:SUMM:INREPLYTO", 0, 2, tmplput_MAIL_SUMM_INREPLYTO, CTX_MAILSUM);
RegisterNamespace("MAIL:BODY", 0, 2, tmplput_MAIL_BODY, CTX_MAILSUM);
RegisterNamespace("MAIL:QUOTETEXT", 1, 2, tmplput_QUOTED_MAIL_BODY, CTX_NONE);
- RegisterConditional(HKEY("COND:ROOM:DISPLAYMSG"), 0, Conditional_ROOM_DISPLAY_MSG, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:LASTMSG"), 0, Conditional_MAIL_SUMM_LASTMSG, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:RFCA"), 0, Conditional_MAIL_SUMM_RFCA, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:CCCC"), 0, Conditional_MAIL_SUMM_CCCC, CTX_MAILSUM);
RegisterConditional(HKEY("COND:MAIL:SUMM:UNREAD"), 0, Conditional_MAIL_SUMM_UNREAD, CTX_MAILSUM);
var mouseDownEvent = null;
var exitedMouseDown = false;
+var currentPage = 0;
var sortModes = {
"rdate" : sortRowsByDateDescending,
"date" : sortRowsByDateAscending,
var msgs = data['msgs'];
var length = msgs.length;
rowArray = new Array(); // store so they can be sorted
+ WCLog("Row array length: "+rowArray.length);
var start = new Date();
for(var i=0; i<length;i++) {
var trElement = document.createElement("tr");
}
}
if (data[5]) {
- trElement.setAttribute("class", "new_message");
+ trElement.ctdlNewMsg = true;
}
trElement.dropEnabled = true;
trElement.ctdlMarked = false;
sizePreviewPane();
}
function resortAndDisplay(sortMode) {
+ WCLog("Begin resortAndDisplay");
var start = new Date();
- emptyElement(message_view);
+ /* We used to try and clear out the message_view element,
+ but stupid IE doesn't even do that properly */
+ var message_view_parent = message_view.parentNode;
+ message_view_parent.removeChild(message_view);
+ message_view = document.createElement("tbody");
+ message_view.setAttribute("id","message_list_body");
+ message_view.className="mailbox_summary";
+ message_view_parent.appendChild(message_view);
+
var fragment = document.createDocumentFragment();
if (sortMode != null) {
rowArray.sort(sortMode);
for(var x=0; x<length; ++x) {
try {
var currentRow = rowArray[x];
- var className = currentRow.className;
- className = className.replace("table-alt-row","");
- className = className.replace("table-row","");
+ currentRow.setAttribute("class","");
+ var className = "";
if (((x-1) % 2) == 0) {
- className += " table-alt-row";
+ className = "table-alt-row";
} else {
- className += " table-row";
+ className = "table-row";
+ }
+ if (currentRow.ctdlNewMsg) {
+ className += " new_message";
}
currentRow.className = className;
/* Using element.onclick is evil, but until IE
function removeOldSortClass() {
if (currentSorterToggle) {
var classes = currentSorterToggle.className;
- classes = classes.replace("current_sort_mode","");
+ /* classes = classes.replace("current_sort_mode","");
classes = classes.replace("sort_ascending","");
- classes = classes.replace("sort_descending","");
- currentSorterToggle.className = classes;
+ classes = classes.replace("sort_descending",""); */
+ currentSorterToggle.className = "";
}
}
function markRow( row) {
function setupPageSelector() {
var summpage = document.getElementById("summpage");
- //var select_page = document.getElementById("selectpage");
+ var select_page = document.getElementById("selectpage");
summpage.innerHTML = "";
if (is_safe_mode) {
- summpage.parentNode.setAttribute("style","display: inline !important"); //override webcit.css
+ WCLog("unhiding parent page");
+ select_page.className = "";
} else {
return;
}
var opt = document.createElement("option");
var startmsg = i * 500;
opt.setAttribute("value",startmsg);
+ if (currentPage == i) {
+ opt.setAttribute("selected","selected");
+ }
opt.appendChild(document.createTextNode((i+1)));
summpage.appendChild(opt);
}
function getPage(event) {
var target = event.target;
startmsg = target.options.item(target.selectedIndex).value;
+ currentPage = target.selectedIndex;
//query = ""; // We are getting a page from the _entire_ msg list, don't query
getMessages();
}
<?CSSLOCAL>
<script type="text/javascript" src="static/protoaculous1.6.packed.js"></script>
-<!--
-<script type="text/javascript" src="static/prototype.js"></script>
-<script type="text/javascript" src="static/scriptaculous.js"></script>
--->
<script type="text/javascript" src="static/niftycube.js"></script>
<script type="text/javascript" src="static/BubbleTooltips.js"></script>
<script type="text/javascript" src="static/datepicker-dev.js"></script>
<script type="text/javascript" src="static/wclib.js"></script>
<script type="text/javascript" src="static/roomops.js"></script>
<script type="text/javascript" src="static/ctdldragdrop.js"></script>
+<!--[if lte IE 7]>
+<script type="text/javascript">
+var is_ie6 = true;
+</script>
+<![endif]-->
+<!--[if IE]>
+<style type="text/css">
+#summary_view table { table-layout: fixed; }
+</style>
+<![endif]-->
</head>
<body>
<??("COND:LOGGEDIN",1)>
<script src="static/summaryview.js" type="text/javascript"></script>
<script type="text/javascript">
var is_safe_mode = <?%("COND:PREF", 1, :"mailbox", "client-nosort",
-"1", "0")>;
+"true", "false")>;
var sortmode = "<?PREF:ROOM:VALUE("sort")>";
</script>
<div id="message_list_hdr">
<li class="start_page"><?START></li>
<li class="search" id="searchomatic"><?SEARCHOMATIC></li>
<li class="view"><?VIEWOMATIC></li>
-<??("COND:SUBST", 1, "WCVIEW", "1")><li id="selectpage"><?_("Select page: ")> <select id="summpage"><option> </option></select></li><??("X",1)>
+<??("COND:SUBST", 1, "WCVIEW", "1")><li class="hidden" id="selectpage"><?_("Select page: ")> <select id="summpage"><option> </option></select></li><??("X",1)>
</ul>
</div>
</div>
<h1>
<?_("Users currently on ")><?SERV:HUMANNODE>
</h1></div>
+<div id="actiondiv">
<ul class="room_actions">
<li class="start_page">
<?OFFERSTARTPAGE>
</li></ul>
</div>
-
+</div>
<div id="content" class="fix_scrollbar_bug who_is_online">
<?DOBOXED("wholiststatic", "wholiststatic_header")>
</div>
var supportsAddEventListener = (!!document.addEventListener);
var today = new Date();
+var wc_log = "";
+var is_ie6 = false;
if (document.all) {browserType = "ie"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {
browserType= "gecko";
function emptyElement(element) {
childNodes = element.childNodes;
for(var i=0; i<childNodes.length; i++) {
+ try {
element.removeChild(childNodes[i]);
+ } catch (e) {
+ WCLog(e+"|"+e.description);
+ }
}
}
/** Implements superior internet explorer 'extract all child text from element' feature'. Falls back on buggy, patent violating standardized method */
console.log(msg);
} else if (!!window.opera && !!opera.postError) {
opera.postError(msg);
+ } else {
+ wc_log += msg + "\r\n";
}
}
// Use prototype api methods here
var elems = [$('room_banner'),$('actiondiv')];
fixMissingCSSTable(elems);
- /* var banner = $('banner');
- if (banner != null) {
- } */
+ if (!is_ie6) {
+ Event.observe(window, 'resize', makeContentScrollable);
+ makeContentScrollable();
+ }
+}
+function makeContentScrollable() {
+if (document.getElementById("banner")
+ && document.getElementById("content")
+ && !document.getElementById("summary_view")) {
+ WCLog("makeContentScrollable");
+ document.body.style.overflowY="hidden";
+ var global = $("global");
+ global.className += "scrollable";
+ var content = document.getElementById("content");
+ var banner = document.getElementById("banner");
+ var bannerHeight = banner.offsetHeight;
+ banner.style.width="100%";
+ var bannerPercent = (bannerHeight/document.viewport.getHeight())*100;
+ //banner.style.height=bannerPercent+"%";
+ content.style.overflowY="scroll";
+ //content.style.top=bannerPercent+"%";
+ content.style.height=(100-bannerPercent)+"%";
+ content.style.right="0px";
+ }
}
-
function fixOffsetBanner() {
var banner = document.getElementById("banner");
if (banner.offsetLeft > 0) {
var viewportWidth = document.viewport.getWidth();
var iconbar = $('iconbar');
var global = $('global');
+ if (iconbar == null || global == null || document.documentElement == null) {
+ return;
+ }
if (typeof window.offsetWidth != 'undefined') {
documentWidth = window.offsetWidth;
} else {
padding: 0;
}
-
#banner a {
color: #FFF
}
left: 0;
overflow-y: auto;
}
-
+#global.scrollable {
+ position: fixed;
+}
#important_message {
position: absolute;
top: 0;
margin-top: 8px;
margin-right: 4px;
}
-#selectpage {
+#selectpage.hidden {
display: none !important;
}
Put(Iterators, Name, len, It, NULL);
}
-/* typedef struct _iteratestruct {
+typedef struct _iteratestruct {
int GroupChange;
int oddeven;
const char *Key;
long KeyLen;
int n;
int LastN;
- }IterateStruct; */
+ }IterateStruct;
void tmpl_iterate_subtmpl(StrBuf *Target, WCTemplputParams *TP)
{
WCConditionalFunc CondF;
} ConditionalStruct;
-/** IterateStruct TODO: SHOULD BE PRIVATE */
-typedef struct _iteratestruct {
- int GroupChange;
- int oddeven;
- const char *Key;
- long KeyLen;
- int n;
- int LastN;
-}IterateStruct;
typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, WCTemplputParams *TP);
typedef HashList *(*RetrieveHashlistFunc)(StrBuf *Target, WCTemplputParams *TP);
fd_set wset;
int fdflags;
-#ifdef HAVE_ZLIB
+ //#ifdef HAVE_ZLIB
/* Perform gzip compression, if enabled and supported by client */
if (!DisableGzip && (WCC->gzip_ok) && CompressBuffer(WCC->WBuf))
{
hprintf("Content-encoding: gzip\r\n");
}
-#endif /* HAVE_ZLIB */
+ //#endif /* HAVE_ZLIB */
hprintf("Content-length: %d\r\n\r\n", StrLength(WCC->WBuf));