steffen: server/kolab-horde-fbview/kolab-horde-fbview/fbview/services/editor/htmlarea dialog.js, NONE, 1.1 htmlarea.css, NONE, 1.1 htmlarea.js, NONE, 1.1 popupdiv.js, NONE, 1.1 popupwin.js, NONE, 1.1
cvs at intevation.de
cvs at intevation.de
Mon Oct 31 12:43:34 CET 2005
- Previous message: steffen: server/kolab-horde-fbview/kolab-horde-fbview/fbview/services cacheview.php, NONE, 1.1 css.php, NONE, 1.1 go.php, NONE, 1.1 javascript.php, NONE, 1.1 keyboard.php, NONE, 1.1 language.php, NONE, 1.1 maintenance.php, NONE, 1.1 prefs.php, NONE, 1.1 problem.php, NONE, 1.1 resetpassword.php, NONE, 1.1
- Next message: steffen: server/kolab-horde-fbview/kolab-horde-fbview/fbview/services/download index.php, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: steffen
Update of /kolabrepository/server/kolab-horde-fbview/kolab-horde-fbview/fbview/services/editor/htmlarea
In directory doto:/tmp/cvs-serv18388/kolab-horde-fbview/kolab-horde-fbview/fbview/services/editor/htmlarea
Added Files:
dialog.js htmlarea.css htmlarea.js popupdiv.js popupwin.js
Log Message:
Fbview in separate package
--- NEW FILE: dialog.js ---
// htmlArea v3.0 - Copyright (c) 2003-2004 interactivetools.com, inc.
// This copyright notice MUST stay intact for use (see license.txt).
//
// Portions (c) dynarch.com, 2003-2004
//
// A free WYSIWYG editor replacement for <textarea> fields.
// For full source code and docs, visit http://www.interactivetools.com/
//
// Version 3.0 developed by Mihai Bazon.
// http://dynarch.com/mishoo
//
// $Id: dialog.js,v 1.1 2005/10/31 11:43:32 steffen Exp $
// Though "Dialog" looks like an object, it isn't really an object. Instead
// it's just namespace for protecting global symbols.
function Dialog(url, action, init) {
if (typeof init == "undefined") {
init = window; // pass this window object by default
}
Dialog._geckoOpenModal(url, action, init);
};
Dialog._parentEvent = function(ev) {
setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50);
if (Dialog._modal && !Dialog._modal.closed) {
HTMLArea._stopEvent(ev);
}
};
// should be a function, the return handler of the currently opened dialog.
Dialog._return = null;
// constant, the currently opened dialog
Dialog._modal = null;
// the dialog will read it's args from this variable
Dialog._arguments = null;
Dialog._geckoOpenModal = function(url, action, init) {
var dlg = window.open(url, "hadialog",
"toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
"scrollbars=no,resizable=yes,modal=yes,dependable=yes");
Dialog._modal = dlg;
Dialog._arguments = init;
// capture some window's events
function capwin(w) {
HTMLArea._addEvent(w, "click", Dialog._parentEvent);
HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent);
HTMLArea._addEvent(w, "focus", Dialog._parentEvent);
};
// release the captured events
function relwin(w) {
HTMLArea._removeEvent(w, "click", Dialog._parentEvent);
HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent);
HTMLArea._removeEvent(w, "focus", Dialog._parentEvent);
};
capwin(window);
// capture other frames
for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
// make up a function to be called when the Dialog ends.
Dialog._return = function (val) {
if (val && action) {
action(val);
}
relwin(window);
// capture other frames
for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
Dialog._modal = null;
};
};
--- NEW FILE: htmlarea.css ---
.htmlarea { background: #fff; }
.htmlarea .toolbar {
cursor: default;
background: ButtonFace;
padding: 1px 1px 2px 1px;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; }
.htmlarea .toolbar img { border: none; }
.htmlarea .toolbar .label { padding: 0px 3px; }
.htmlarea .toolbar .button {
background: ButtonFace;
color: ButtonText;
border: 1px solid ButtonFace;
padding: 1px;
margin: 0px;
width: 18px;
height: 18px;
}
.htmlarea .toolbar .buttonHover {
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed {
padding: 2px 0px 0px 2px;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
.htmlarea .toolbar .buttonPressed {
background: ButtonHighlight;
}
.htmlarea .toolbar .indicator {
padding: 0px 3px;
overflow: hidden;
width: 20px;
text-align: center;
cursor: default;
border: 1px solid ButtonShadow;
}
.htmlarea .toolbar .buttonDisabled img {
filter: alpha(opacity = 25);
-moz-opacity: 0.25;
}
.htmlarea .toolbar .separator {
position: relative;
margin: 3px;
border-left: 1px solid ButtonShadow;
border-right: 1px solid ButtonHighlight;
width: 0px;
height: 16px;
padding: 0px;
}
.htmlarea .toolbar .space { width: 5px; }
.htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; }
.htmlarea .toolbar select,
.htmlarea .toolbar select:hover,
.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; }
.htmlarea .statusBar {
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
padding: 2px 4px;
background-color: ButtonFace;
color: ButtonText;
font: 11px Tahoma,Verdana,sans-serif;
}
.htmlarea .statusBar .statusBarTree a {
padding: 2px 5px;
color: #00f;
}
.htmlarea .statusBar .statusBarTree a:visited { color: #00f; }
.htmlarea .statusBar .statusBarTree a:hover {
background-color: Highlight;
color: HighlightText;
padding: 1px 4px;
border: 1px solid HighlightText;
}
/* Hidden DIV popup dialogs (PopupDiv) */
.dialog {
color: ButtonText;
background: ButtonFace;
}
.dialog .content { padding: 2px; }
.dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table {
font: 11px Tahoma,Verdana,sans-serif;
}
.dialog table { border-collapse: collapse; }
.dialog .title {
background: #008;
color: #ff8;
border-bottom: 1px solid #000;
padding: 1px 0px 2px 5px;
font-size: 12px;
font-weight: bold;
cursor: default;
}
.dialog .title .button {
float: right;
border: 1px solid #66a;
padding: 0px 1px 0px 2px;
margin-right: 1px;
color: #fff;
text-align: center;
}
.dialog .title .button-hilite { border-color: #88f; background: #44c; }
.dialog button {
width: 5em;
padding: 0px;
}
.dialog .buttonColor {
padding: 1px;
cursor: default;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.dialog .buttonColor-hilite {
border-color: #000;
}
.dialog .buttonColor .chooser, .dialog .buttonColor .nocolor {
height: 0.6em;
border: 1px solid;
padding: 0px 1em;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
}
.dialog .buttonColor .nocolor { padding: 0px; }
.dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; }
.dialog .label { text-align: right; width: 6em; }
.dialog .value input { width: 100%; }
.dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; }
.dialog legend { font-weight: bold; }
.dialog fieldset table { margin: 2px 0px; }
.popupdiv {
border: 2px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.popupwin {
padding: 0px;
margin: 0px;
}
.popupwin .title {
background: #fff;
color: #000;
font-weight: bold;
font-size: 120%;
padding: 3px 10px;
margin-bottom: 10px;
border-bottom: 1px solid black;
letter-spacing: 2px;
}
form { margin: 0px; border: none; }
--- NEW FILE: htmlarea.js ---
// htmlArea v3.0 - Copyright (c) 2002-2004 interactivetools.com, inc.
// This copyright notice MUST stay intact for use (see license.txt).
//
// Portions (c) dynarch.com, 2003-2004
//
// A free WYSIWYG editor replacement for <textarea> fields.
// For full source code and docs, visit http://www.interactivetools.com/
//
// Version 3.0 developed by Mihai Bazon.
// http://dynarch.com/mishoo
//
// $Id: htmlarea.js,v 1.1 2005/10/31 11:43:32 steffen Exp $
if (typeof _editor_url == "string") {
// Leave exactly one backslash at the end of _editor_url
_editor_url = _editor_url.replace(/\x2f*$/, '/');
} else {
alert("WARNING: _editor_url is not set! You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea/', but it can be relative if you prefer. Further we will try to load the editor files correctly but we'll probably fail.");
_editor_url = '';
[...2202 lines suppressed...]
* FIX: Internet Explorer returns an item having the _name_ equal to the given
* id, even if it's not having any id. This way it can return a different form
* field even if it's not a textarea. This workarounds the problem by
* specifically looking to search only elements having a certain tag name.
*/
HTMLArea.getElementById = function(tag, id) {
var el, i, objs = document.getElementsByTagName(tag);
for (i = objs.length; --i >= 0 && (el = objs[i]);)
if (el.id == id)
return el;
return null;
};
// EOF
// Local variables: //
// c-basic-offset:8 //
// indent-tabs-mode:t //
// End: //
--- NEW FILE: popupdiv.js ---
/** This file is derived from PopupDiv, developed by Mihai Bazon for
* SamWare.net. Modifications were needed to make it usable in HTMLArea.
* HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com.
*
* This file does not function standalone. It is dependent of global functions
* defined in HTMLArea-3.0 (htmlarea.js).
*
* Please see file htmlarea.js for further details.
**/
var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) &&
(navigator.userAgent.toLowerCase().indexOf("opera") == -1) );
var is_compat = (document.compatMode == "BackCompat");
function PopupDiv(editor, titleText, handler, initFunction) {
var self = this;
this.editor = editor;
this.doc = editor._mdoc;
this.handler = handler;
var el = this.doc.createElement("div");
el.className = "content";
var popup = this.doc.createElement("div");
popup.className = "dialog popupdiv";
this.element = popup;
var s = popup.style;
s.position = "absolute";
s.left = "0px";
s.top = "0px";
var title = this.doc.createElement("div");
title.className = "title";
this.title = title;
popup.appendChild(title);
HTMLArea._addEvent(title, "mousedown", function(ev) {
self._dragStart(is_ie ? window.event : ev);
});
var button = this.doc.createElement("div");
button.className = "button";
title.appendChild(button);
button.innerHTML = "×";
title.appendChild(this.doc.createTextNode(titleText));
this.titleText = titleText;
button.onmouseover = function() {
this.className += " button-hilite";
};
button.onmouseout = function() {
this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
};
button.onclick = function() {
this.className = this.className.replace(/\s*button-hilite\s*/g, " ");
self.close();
};
popup.appendChild(el);
this.content = el;
this.doc.body.appendChild(popup);
this.dragging = false;
this.onShow = null;
this.onClose = null;
this.modal = false;
initFunction(this);
};
PopupDiv.currentPopup = null;
PopupDiv.prototype.showAtElement = function(el, mode) {
this.defaultSize();
var pos, ew, eh;
var popup = this.element;
popup.style.display = "block";
var w = popup.offsetWidth;
var h = popup.offsetHeight;
popup.style.display = "none";
if (el != window) {
pos = PopupDiv.getAbsolutePos(el);
ew = el.offsetWidth;
eh = el.offsetHeight;
} else {
pos = {x:0, y:0};
var size = PopupDiv.getWindowSize();
ew = size.x;
eh = size.y;
}
var FX = false, FY = false;
if (mode.indexOf("l") != -1) {
pos.x -= w;
FX = true;
}
if (mode.indexOf("r") != -1) {
pos.x += ew;
FX = true;
}
if (mode.indexOf("t") != -1) {
pos.y -= h;
FY = true;
}
if (mode.indexOf("b") != -1) {
pos.y += eh;
FY = true;
}
if (mode.indexOf("c") != -1) {
FX || (pos.x += Math.round((ew - w) / 2));
FY || (pos.y += Math.round((eh - h) / 2));
}
this.showAt(pos.x, pos.y);
};
PopupDiv.prototype.defaultSize = function() {
var s = this.element.style;
var cs = this.element.currentStyle;
var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) +
parseInt(cs.borderRightWidth) +
parseInt(cs.paddingLeft) +
parseInt(cs.paddingRight)) : 0;
var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) +
parseInt(cs.borderBottomWidth) +
parseInt(cs.paddingTop) +
parseInt(cs.paddingBottom)) : 0;
s.display = "block";
s.width = (this.content.offsetWidth + addX) + "px";
s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px";
s.display = "none";
};
PopupDiv.prototype.showAt = function(x, y) {
this.defaultSize();
var s = this.element.style;
s.display = "block";
s.left = x + "px";
s.top = y + "px";
this.hideShowCovered();
PopupDiv.currentPopup = this;
HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
if (is_ie && this.modal) {
this.doc.body.setCapture(false);
this.doc.body.onlosecapture = function() {
(PopupDiv.currentPopup) && (this.doc.body.setCapture(false));
};
}
window.event && HTMLArea._stopEvent(window.event);
if (typeof this.onShow == "function") {
this.onShow();
} else if (typeof this.onShow == "string") {
eval(this.onShow);
}
var field = this.element.getElementsByTagName("input")[0];
if (!field) {
field = this.element.getElementsByTagName("select")[0];
}
if (!field) {
field = this.element.getElementsByTagName("textarea")[0];
}
if (field) {
field.focus();
}
};
PopupDiv.prototype.close = function() {
this.element.style.display = "none";
PopupDiv.currentPopup = null;
this.hideShowCovered();
HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup);
is_ie && this.modal && this.doc.body.releaseCapture();
if (typeof this.onClose == "function") {
this.onClose();
} else if (typeof this.onClose == "string") {
eval(this.onClose);
}
this.element.parentNode.removeChild(this.element);
};
PopupDiv.prototype.getForm = function() {
var forms = this.content.getElementsByTagName("form");
return (forms.length > 0) ? forms[0] : null;
};
PopupDiv.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {
var el = els[j];
params[el.name] = el.value;
}
}
this.handler(this, params);
return false;
};
PopupDiv.getAbsolutePos = function(el) {
var r = { x: el.offsetLeft, y: el.offsetTop };
if (el.offsetParent) {
var tmp = PopupDiv.getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y;
}
return r;
};
PopupDiv.getWindowSize = function() {
if (window.innerHeight) {
return { y: window.innerHeight, x: window.innerWidth };
}
if (this.doc.body.clientHeight) {
return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth };
}
return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth };
};
PopupDiv.prototype.hideShowCovered = function () {
var self = this;
function isContained(el) {
while (el) {
if (el == self.element) {
return true;
}
el = el.parentNode;
}
return false;
};
var tags = new Array("applet", "select");
var el = this.element;
var p = PopupDiv.getAbsolutePos(el);
var EX1 = p.x;
var EX2 = el.offsetWidth + EX1;
var EY1 = p.y;
var EY2 = el.offsetHeight + EY1;
if (el.style.display == "none") {
EX1 = EX2 = EY1 = EY2 = 0;
}
for (var k = tags.length; k > 0; ) {
var ar = this.doc.getElementsByTagName(tags[--k]);
var cc = null;
for (var i = ar.length; i > 0;) {
cc = ar[--i];
if (isContained(cc)) {
cc.style.visibility = "visible";
continue;
}
p = PopupDiv.getAbsolutePos(cc);
var CX1 = p.x;
var CX2 = cc.offsetWidth + CX1;
var CY1 = p.y;
var CY2 = cc.offsetHeight + CY1;
if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
cc.style.visibility = "visible";
} else {
cc.style.visibility = "hidden";
}
}
}
};
PopupDiv.prototype._dragStart = function (ev) {
if (this.dragging) {
return false;
}
this.dragging = true;
PopupDiv.currentPopup = this;
var posX = ev.clientX;
var posY = ev.clientY;
if (is_ie) {
posY += this.doc.body.scrollTop;
posX += this.doc.body.scrollLeft;
} else {
posY += window.scrollY;
posX += window.scrollX;
}
var st = this.element.style;
this.xOffs = posX - parseInt(st.left);
this.yOffs = posY - parseInt(st.top);
HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt);
HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent);
HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd);
HTMLArea._stopEvent(ev);
};
PopupDiv.dragIt = function (ev) {
var popup = PopupDiv.currentPopup;
if (!(popup && popup.dragging)) {
return false;
}
is_ie && (ev = window.event);
var posX = ev.clientX;
var posY = ev.clientY;
if (is_ie) {
posY += this.doc.body.scrollTop;
posX += this.doc.body.scrollLeft;
} else {
posY += window.scrollY;
posX += window.scrollX;
}
popup.hideShowCovered();
var st = popup.element.style;
st.left = (posX - popup.xOffs) + "px";
st.top = (posY - popup.yOffs) + "px";
HTMLArea._stopEvent(ev);
};
PopupDiv.dragEnd = function () {
var popup = PopupDiv.currentPopup;
if (!popup) {
return false;
}
popup.dragging = false;
HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd);
HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent);
HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt);
popup.hideShowCovered();
};
PopupDiv.checkPopup = function (ev) {
is_ie && (ev = window.event);
var el = is_ie ? ev.srcElement : ev.target;
var cp = PopupDiv.currentPopup;
for (; (el != null) && (el != cp.element); el = el.parentNode);
if (el == null) {
cp.modal || ev.type == "mouseover" || cp.close();
HTMLArea._stopEvent(ev);
}
};
PopupDiv.prototype.addButtons = function() {
var self = this;
var div = this.doc.createElement("div");
this.content.appendChild(div);
div.className = "buttons";
for (var i = 0; i < arguments.length; ++i) {
var btn = arguments[i];
var button = this.doc.createElement("button");
div.appendChild(button);
button.innerHTML = HTMLArea.I18N.buttons[btn];
switch (btn) {
case "ok":
button.onclick = function() {
self.callHandler();
self.close();
};
break;
case "cancel":
button.onclick = function() {
self.close();
};
break;
}
}
};
--- NEW FILE: popupwin.js ---
// (c) dynarch.com 2003-2004
// Distributed under the same terms as HTMLArea itself.
function PopupWin(editor, title, handler, initFunction) {
this.editor = editor;
this.handler = handler;
var dlg = window.open("", "__ha_dialog",
"toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
"scrollbars=no,resizable=no");
this.window = dlg;
var doc = dlg.document;
this.doc = doc;
var self = this;
var base = document.baseURI || document.URL;
if (base && base.match(/(.*)\/([^\/]+)/)) {
base = RegExp.$1 + "/";
}
if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
// _editor_url doesn't start with '/' which means it's relative
// FIXME: there's a problem here, it could be http:// which
// doesn't start with slash but it's not relative either.
base += _editor_url;
} else
base = _editor_url;
if (!/\/$/.test(base)) {
// base does not end in slash, add it now
base += '/';
}
this.baseURL = base;
doc.open();
var html = "<html><head><title>" + title + "</title>\n";
// html += "<base href='" + base + "htmlarea.js' />\n";
html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
doc.write(html);
doc.close();
// sometimes I Hate Mozilla... ;-(
function init2() {
var body = doc.body;
if (!body) {
setTimeout(init2, 25);
return false;
}
dlg.title = title;
doc.documentElement.style.padding = "0px";
doc.documentElement.style.margin = "0px";
var content = doc.createElement("div");
content.className = "content";
self.content = content;
body.appendChild(content);
self.element = body;
initFunction(self);
dlg.focus();
};
init2();
};
PopupWin.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {
var el = els[j];
var val = el.value;
if (el.tagName.toLowerCase() == "input") {
if (el.type == "checkbox") {
val = el.checked;
}
}
params[el.name] = val;
}
}
this.handler(this, params);
return false;
};
PopupWin.prototype.close = function() {
this.window.close();
};
PopupWin.prototype.addButtons = function() {
var self = this;
var div = this.doc.createElement("div");
this.content.appendChild(div);
div.className = "buttons";
for (var i = 0; i < arguments.length; ++i) {
var btn = arguments[i];
var button = this.doc.createElement("button");
div.appendChild(button);
button.innerHTML = HTMLArea.I18N.buttons[btn];
switch (btn) {
case "ok":
button.onclick = function() {
self.callHandler();
self.close();
return false;
};
break;
case "cancel":
button.onclick = function() {
self.close();
return false;
};
break;
}
}
};
PopupWin.prototype.showAtElement = function() {
var self = this;
// Mozilla needs some time to realize what's goin' on..
setTimeout(function() {
var w = self.content.offsetWidth + 4;
var h = self.content.offsetHeight + 4;
// size to content -- that's fuckin' buggy in all fuckin' browsers!!!
// so that we set a larger size for the dialog window and then center
// the element inside... phuck!
// center...
var el = self.content;
var s = el.style;
// s.width = el.offsetWidth + "px";
// s.height = el.offsetHeight + "px";
s.position = "absolute";
s.left = (w - el.offsetWidth) / 2 + "px";
s.top = (h - el.offsetHeight) / 2 + "px";
if (HTMLArea.is_gecko) {
self.window.innerWidth = w;
self.window.innerHeight = h;
} else {
self.window.resizeTo(w + 8, h + 35);
}
}, 25);
};
- Previous message: steffen: server/kolab-horde-fbview/kolab-horde-fbview/fbview/services cacheview.php, NONE, 1.1 css.php, NONE, 1.1 go.php, NONE, 1.1 javascript.php, NONE, 1.1 keyboard.php, NONE, 1.1 language.php, NONE, 1.1 maintenance.php, NONE, 1.1 prefs.php, NONE, 1.1 problem.php, NONE, 1.1 resetpassword.php, NONE, 1.1
- Next message: steffen: server/kolab-horde-fbview/kolab-horde-fbview/fbview/services/download index.php, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the commits
mailing list