IDEMPIERE-1635 Upgrade to zk7. Initial commit. WIP.

This commit is contained in:
Heng Sin Low 2013-12-16 12:25:32 +08:00
parent e3092231f1
commit f41088eb9e
28 changed files with 953 additions and 490 deletions

File diff suppressed because one or more lines are too long

View File

@ -6,15 +6,15 @@
_encs[_decs[v]] = v;
function _pathname(url) {
var j = url.indexOf("//");
var j = url.indexOf('//');
if (j > 0) {
j = url.indexOf("/", j + 2);
j = url.indexOf('/', j + 2);
if (j > 0) return url.substring(j);
}
}
function _frames(ary, w) {
//Note: the access of frames is allowed for any window (even if it connects other website)
ary.push(w);
for (var fs = w.frames, j = 0, l = fs.length; j < l; ++j)
_frames(ary, fs[j]);
@ -109,12 +109,12 @@ zUtl = {
out.push(txt.substring(k, j), '&', enc, ';');
k = j + 1;
} else if (multiline && cc == '\n') {
out.push(txt.substring(k, j), "<br/>\n");
out.push(txt.substring(k, j), '<br/>\n');
k = j + 1;
} else if (pre && (cc == ' ' || cc == '\t')) {
out.push(txt.substring(k, j), "&nbsp;");
out.push(txt.substring(k, j), '&nbsp;');
if (cc == '\t')
out.push("&nbsp;&nbsp;&nbsp;");
out.push('&nbsp;&nbsp;&nbsp;');
k = j + 1;
}
}
@ -132,7 +132,7 @@ zUtl = {
},
decodeXML: function (txt) {
var out = "";
var out = '';
if (!txt) return out;
var k = 0, tl = txt.length;
@ -170,7 +170,7 @@ zUtl = {
today: function (fmt) {
var d = new Date(), hr = 0, min = 0, sec = 0, msec = 0;
if (typeof fmt == "string") {
if (typeof fmt == 'string') {
var fmt0 = fmt.toLowerCase();
if (fmt0.indexOf('h') >= 0 || fmt0.indexOf('k') >= 0) hr = d.getHours();
if (fmt.indexOf('m') >= 0) min = d.getMinutes();
@ -198,7 +198,7 @@ zUtl = {
for (var c = zk.Page.contained.length, e = zk.Page.contained[--c]; e; e = zk.Page.contained[--c]) {
if (!e._applyMask)
e._applyMask = new zk.eff.Mask({
id: e.uuid + "-mask",
id: e.uuid + '-mask',
message: msg,
anchor: e.$n()
});
@ -230,11 +230,16 @@ zUtl = {
$txt = jq(idtxt, zk),
txt = $txt[0],
st = txt.style;
if (mask)
if (mask) {
// old IE will get the auto value by default.
var zIndex = $txt.css('z-index');
if (zIndex == 'auto')
zIndex = 1;
n.z_mask = new zk.eff.FullMask({
mask: jq(idmsk, zk)[0],
zIndex: $txt.css('z-index') - 1
zIndex: zIndex - 1
});
}
if (mask && $txt.length) {
st.left = jq.px((jq.innerWidth() - txt.offsetWidth) / 2 + x);
@ -249,19 +254,19 @@ zUtl = {
wdgap = width - zk(txt).offsetWidth(),
hghgap = height - zk(txt).offsetHeight();
if (pos.indexOf("mouse") >= 0) {
if (pos.indexOf('mouse') >= 0) {
var offset = zk.currentPointer;
left = offset[0] + 10;
top = offset[1] + 10;
} else {
if (pos.indexOf("left") >= 0) left = x;
else if (pos.indexOf("right") >= 0) left = x + wdgap -1;
else if (pos.indexOf("center") >= 0) left = x + wdgap / 2;
if (pos.indexOf('left') >= 0) left = x;
else if (pos.indexOf('right') >= 0) left = x + wdgap -1;
else if (pos.indexOf('center') >= 0) left = x + wdgap / 2;
else left = 0;
if (pos.indexOf("top") >= 0) top = y;
else if (pos.indexOf("bottom") >= 0) top = y + hghgap - 1;
else if (pos.indexOf("center") >= 0) top = y + hghgap / 2;
if (pos.indexOf('top') >= 0) top = y;
else if (pos.indexOf('bottom') >= 0) top = y + hghgap - 1;
else if (pos.indexOf('center') >= 0) top = y + hghgap / 2;
else top = 0;
left = left < x ? x : left;
@ -330,7 +335,7 @@ zUtl = {
intsToString: function (ary) {
if (!ary) return "";
if (!ary) return '';
var sb = [];
for (var j = 0, k = ary.length; j < k; ++j)
@ -370,7 +375,7 @@ zUtl = {
appendAttr: function (nm, val, force) {
return val || force ? ' ' + nm + '="' + val + '"': "";
return val || force ? ' ' + nm + '="' + val + '"': '';
},
fireSized: function (wgt, bfsz) {
@ -401,13 +406,14 @@ zUtl = {
},
isImageLoading: function () {
for (var img in _imgObjectMap) {
for (var url in _imgObjectMap) {
var img = _imgObjectMap[url];
if (img.complete) {
try {
delete _imgMap[img.src];
delete _imgMap[url];
} catch (err) {}
try {
delete _imgObjectMap[img.src];
delete _imgObjectMap[url];
} catch (err) {}
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,514 @@
(function () {
function _cancel(o, sid, finish) {
var key = o.getKey(sid),
uplder = o.uploaders[key];
if (uplder)
uplder.destroy(finish);
delete o.uploaders[key];
}
function _initUploader(o, form, val) {
var key = o.getKey(o.sid),
uplder = new zul.Uploader(o, key, form, val);
zul.Upload.start(uplder);
o.uploaders[key] = uplder;
}
function _start(o, form, val) {
_initUploader(o, form, val);
o.sid++;
o.initContent();
}
function _onchange(evt) {
var n = this,
upload = n._ctrl,
wgt = upload._wgt,
dt = wgt.desktop,
action = zk.ajaxURI('/upload', {desktop:dt,au:true}) + '?uuid=' + wgt.uuid + '&dtid=' + dt.id + '&sid=' + upload.sid
+ (upload.maxsize !== '' ? '&maxsize=' + upload.maxsize : '')
+ (upload.isNative ? '&native=true' : ''),
form = n.form;
form.action = action;
var p = form.parentNode;
p.parentNode.removeChild(p);
upload._formDetached = true;
var fileName = !n.files || n.files.length == 1 ? n.value : (function(files){
var fns = [];
for (var len = files.length; len--;)
fns.unshift(files[len].name);
return fns.join(",");
})(n.files);
_start(n._ctrl, form, fileName);
}
if (zk.opera) {
var _syncQue = [], _syncId;
function _syncNow() {
for (var j = _syncQue.length; j--;)
_syncQue[j].sync();
}
function _addSyncQue(upld) {
if (!_syncQue.length)
_syncId = setInterval(_syncNow, 1500);
_syncQue.push(upld);
}
function _rmSyncQue(upld) {
_syncQue.$remove(upld);
if (_syncId && !_syncQue.length) {
clearInterval(_syncId);
_syncId = null;
}
}
}
zul.Upload = zk.$extends(zk.Object, {
sid: 0,
$init: function(wgt, parent, clsnm) {
this.uploaders = {};
var cls;
for (var attrs = clsnm.split(','), i = 0, len = attrs.length; i < len; i++) {
var attr = attrs[i].trim();
if (attr.startsWith('maxsize='))
this.maxsize = attr.match(new RegExp(/maxsize=([^,]*)/))[1];
else if (attr.startsWith('multiple='))
this.multiple = attr.match(new RegExp(/multiple=([^,]*)/))[1];
else if (attr.startsWith('accept='))
this.accept = attr.match(new RegExp(/accept=([^,]*)/))[1];
else if (attr == 'native')
this.isNative = true;
else if (attr != 'true')
cls = attr;
}
this._clsnm = cls || '';
this._wgt = wgt;
this._parent = parent;
if (wgt._tooltiptext)
this._tooltiptext = wgt._tooltiptext;
this.initContent();
},
sync: function () {
if (!this._formDetached) {
var wgt = this._wgt,
ref = wgt.$n(),
parent = this._parent,
outer = parent ? parent.lastChild : ref.nextSibling,
inp = outer.firstChild.firstChild,
refof = zk(ref).revisedOffset(),
outerof = jq(outer).css({top: '0', left: '0'}).zk.revisedOffset(),
diff = inp.offsetWidth - ref.offsetWidth,
st = outer.style;
st.top = (refof[1] - outerof[1]) + "px";
st.left = refof[0] - outerof[0] - diff + "px";
inp.style.height = ref.offsetHeight + 'px';
inp.style.clip = 'rect(auto,auto,auto,' + diff + 'px)';
}
},
initContent: function () {
var wgt = this._wgt,
parent = this._parent,
ref = wgt.$n(), dt = wgt.desktop,
html = '<span class="z-upload"'
+ (this._tooltiptext? ' title="'+ this._tooltiptext+'"' : '')
+'><form enctype="multipart/form-data" method="POST">'
+ '<input name="file" type="file"'
+ (this.multiple == 'true' ? ' multiple="" multiple' : '')
+ (this.accept ? ' accept="' + this.accept + '"' : '')
+ ' hidefocus="true" style="height:'
+ ref.offsetHeight + 'px"/></form></span>';
if (parent)
jq(parent).append(html);
else
jq(wgt).after(html);
delete this._formDetached;
if (!wgt._autodisable_self)
this.sync();
var outer = this._outer = parent ? parent.lastChild : ref.nextSibling,
inp = outer.firstChild.firstChild;
if (zk.opera) {
outer.style.position = 'absolute';
_addSyncQue(this);
}
inp.z$proxy = ref;
inp._ctrl = this;
jq(inp).change(_onchange);
},
destroy: function () {
if (zk.opera)
_rmSyncQue(this);
jq(this._outer).remove();
this._wgt = this._parent = null;
for (var v in this.uploaders) {
var uplder = this.uploaders[v];
if (uplder) {
delete this.uploaders[v];
uplder.destroy();
}
}
},
getKey: function (sid) {
return (this._wgt ? this._wgt.uuid : '' )+ '_uplder_' + sid;
},
cancel: function (sid) {
_cancel(this, sid);
},
finish: function (sid) {
_cancel(this, sid, true);
}
},{
error: function (msg, uuid, sid) {
var wgt = zk.Widget.$(uuid);
if (wgt) {
jq.alert(msg, {desktop: wgt.desktop, icon: 'ERROR'});
zul.Upload.close(uuid, sid);
}
},
close: function (uuid, sid) {
var wgt = zk.Widget.$(uuid);
if (!wgt || !wgt._uplder) return;
wgt._uplder.cancel(sid);
},
sendResult: function (uuid, contentId, sid) {
var wgt = zk.Widget.$(uuid);
if (!wgt || !wgt._uplder) return;
wgt._uplder.finish(sid);
zAu.send(new zk.Event(wgt.desktop, "updateResult", {
contentId: contentId,
wid: wgt.uuid,
sid: sid
}));
},
isFinish: function (wgt) {
for (var key = (typeof wgt == 'string' ? wgt : wgt.uuid) + '_uplder_',
f = zul.Upload.files, i = f.length; i--;)
if (f[0].id.startsWith(key))
return false;
return true;
},
start: function (uplder) {
var files = zul.Upload.files;
if (uplder)
files.push(uplder);
if (files[0] && !files[0].isStart) {
files[0].isStart = true;
files[0].start();
}
},
destroy: function (uplder) {
for (var files = zul.Upload.files, i = files.length; i--;)
if (files[i].id == uplder.id) {
files.splice(i, 1);
break;
}
zul.Upload.start();
},
files: []
});
zul.Uploader = zk.$extends(zk.Object, {
$init: function (upload, id, form, flnm) {
this.id = id;
this.flnm = flnm;
this._upload = upload;
this._form = form;
this._parent = form.parentNode;
this._sid = upload.sid;
this._wgt = upload._wgt;
var viewer, self = this;
if (!upload._clsnm) viewer = new zul.UploadViewer(this, flnm);
else
zk.$import(upload._clsnm, function (cls) {
viewer = new cls(self, flnm);
});
this.viewer = viewer;
},
getWidget: function () {
return this._wgt;
},
destroy: function (finish) {
this.end(finish);
if (this._form) {
jq(this._form.parentNode).remove();
jq('#' + this.id + '_ifm').remove();
}
this._form = this._upload = this._wgt = null;
},
start: function () {
var wgt = this._wgt,
frameId = this.id + '_ifm';
document.body.appendChild(this._parent);
if (!jq('#' + frameId).length)
jq.newFrame(frameId);
this._form.target = frameId;
this._form.submit();
this._form.style.display = "none";
var self = this,
data = 'cmd=uploadInfo&dtid=' + wgt.desktop.id
+ '&wid=' + wgt.uuid + '&sid=' + this._sid;
if (zul.Uploader._tmupload)
clearInterval(zul.Uploader._tmupload);
function t() {
jq.ajax({
type: 'POST',
url: zk.ajaxURI('/upload', {desktop: wgt.desktop, au: true}),
data: data,
dataType: 'text',
success: function(data) {
var d = data.split(',');
if (data.startsWith('error:')) {
self._echo = true;
zul.Uploader.clearInterval(self.id);
if (wgt) {
self.cancel();
zul.Upload.error(data.substring(6, data.length), wgt.uuid, self._sid);
}
} else if (!self.update(zk.parseInt(d[0]), zk.parseInt(d[1])))
zul.Uploader.clearInterval(self.id);
},
complete: function(req, status) {
var v;
if ((v = req.getResponseHeader("ZK-Error")) == "404"
|| v == "410" || status == 'error'
|| status == 404 || status == 405 || status == 410) {
zul.Uploader.clearInterval(self.id);
var wgt = self.getWidget();
if (wgt) {
self.cancel();
zul.Upload.error(msgzk.FAILED_TO_RESPONSE, wgt.uuid, self._sid);
}
return;
}
}
});
}
t.id = this.id;
zul.Uploader.clearInterval = function (id) {
if (t.id == id) {
clearInterval(zul.Uploader._tmupload);
zul.Uploader._tmupload = undefined;
}
};
zul.Uploader._tmupload = setInterval(t, 1000);
zul.wgt.ADBS.autodisable(wgt);
},
cancel: function () {
zul.Uploader.clearInterval(this.id);
if (this._upload)
this._upload.cancel(this._sid);
},
update: function (sent, total) {
var wgt = this.getWidget();
if (!wgt || total <= 0)
if (this._echo)
this.end();
else
return true;
else if (zul.Uploader._tmupload) {
this._echo = true;
if (sent >= 0 && sent <= 100)
this.viewer.update(sent, total);
return sent >= 0 && sent < 100;
}
return false;
},
end: function (finish) {
this.viewer.destroy(finish);
zul.Upload.destroy(this);
this._echo = true;
var wgt, upload, aded, parent;
if ((wgt = this._wgt) && (upload = this._upload) &&
(aded = upload._aded)) {
wgt._uplder = null;
aded.onResponse();
upload._aded = null;
if (wgt._uplder != null)
wgt._uplder.destroy();
if ((parent = upload._parent) && !jq(parent).parents('html').length) {
upload._parent = wgt._getUploadRef();
upload.initContent();
}
wgt._uplder = upload;
wgt._uplder.sync();
delete wgt._autodisable_self;
}
}
});
function _addUM(uplder, flnm) {
var flman = zul.UploadViewer.flman;
if (!flman || !flman.desktop) {
if (flman) flman.detach();
zul.UploadViewer.flman = flman = new zul.UploadManager();
uplder.getWidget().getPage().appendChild(flman);
}
flman.removeFile(uplder);
flman.addFile(uplder);
}
function _initUM(uplder, flnm) {
if (zul.UploadManager)
return _addUM(uplder, flnm);
zk.load('zul.wgt,zul.box', function() {
zul.UploadManager = zk.$extends(zul.wgt.Popup, {
$init: function () {
this.$supers('$init', arguments);
this._files = {};
this.setSclass('z-fileupload-manager');
},
onFloatUp: function(ctl) {
var wgt = ctl.origin;
if (!this.isVisible())
return;
this.setTopmost();
},
getFileItem: function(id) {
return this._files[id] || zk.Widget.$(id);
},
addFile: function(uplder) {
var id = uplder.id,
flnm = uplder.flnm,
prog = this.getFileItem(id);
if (!prog) {
prog = new zul.wgt.Div({
uuid: id,
children: [new zul.wgt.Label({
value: flnm + ':'
}), new zul.box.Box({
mold: 'horizontal',
children: [new zul.wgt.Progressmeter({
id: id,
sclass: 'z-fileupload-progress'
})
, new zul.wgt.Div({
sclass: 'z-fileupload-remove z-icon-times',
listeners: {
onClick: function () {
var uuid = id.substring(0, id.indexOf('_uplder_'));
zul.Uploader.clearInterval(id);
var wgt = zk.Widget.$(uuid);
if (wgt) wgt._uplder.cancel(id.substring(id.lastIndexOf('_')+1, id.length));
}
}
})]
}), new zul.wgt.Label({id: id + '_total'}), new zul.wgt.Separator()]
});
try {
this.appendChild(prog);
} catch (e) {}
this._files[id] = prog;
}
return prog;
},
updateFile: function(uplder, val, total) {
var id = uplder.id,
prog = this.getFileItem(id);
if (!prog) return;
prog.$f(id).setValue(val);
prog.$f(id + '_total').setValue(total);
},
removeFile: function(uplder) {
var id = uplder.id,
prog = this.getFileItem(id);
if (prog)
prog.detach();
delete this._files[id];
var close = true;
for (var p in this._files)
if (!(close = false))
break;
if (close)
this.close();
},
open: function(wgt, position) {
this.$super('open', wgt, null, position || 'after_start', {
sendOnOpen: false,
disableMask: true
});
}
});
_addUM(uplder, flnm);
});
}
zul.UploadViewer = zk.$extends(zk.Object, {
$init: function (uplder, flnm) {
this._uplder = uplder;
_initUM(uplder, flnm);
},
update: function (sent, total) {
var flman = zul.UploadViewer.flman;
if (flman) {
if (!flman.isOpen())
flman.open(this._uplder.getWidget());
flman.updateFile(this._uplder, sent, msgzk.FILE_SIZE+Math.round(total/1024)+msgzk.KBYTES);
}
},
destroy: function () {
var flman = zul.UploadViewer.flman;
if (flman)
flman.removeFile(this._uplder);
}
});
})();

View File

@ -260,4 +260,8 @@ public class AtmosphereServerPush implements ServerPush {
return "[" + thread + ',' + nActive + ']';
}
}
@Override
public void resume() {
}
}

View File

@ -38,10 +38,7 @@ Copyright (C) 2007 Ashley G Ramdass (ADempiere WebUI).
<javascript src="/js/persist-min.js" charset="UTF-8"/>
<javascript src="/js/token.js" charset="UTF-8"/>
<javascript src="/js/window.js" charset="UTF-8"/>
<!-- The bug workaround by the following patch should have been fixed in 6.5.2 -->
<!-- javascript src="/js/jquery-patch.js" charset="UTF-8"/-->
<javascript src="/js/jquery.slimscroll.min.js" charset="UTF-8"/>
<javascript src="/js/jquery-ui-1.10.1.min.js" charset="UTF-8"/>
<javascript src="/js/html2canvas.js" charset="UTF-8"/>
<javascript package="jawwa.atmosphere" merge="false" />

View File

@ -213,8 +213,8 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
HttpSession httpSess = (HttpSession) currSess.getNativeSession();
String x_Forward_IP = Executions.getCurrent().getHeader("X-Forwarded-For");
MSession mSession = MSession.get (ctx, x_Forward_IP!=null ? x_Forward_IP : currSess.getRemoteAddr(),
currSess.getRemoteHost(), httpSess.getId() );
MSession mSession = MSession.get (ctx, x_Forward_IP!=null ? x_Forward_IP : Executions.getCurrent().getRemoteAddr(),
Executions.getCurrent().getRemoteHost(), httpSess.getId() );
if (clientInfo.userAgent != null) {
mSession.setDescription(mSession.getDescription() + "\n" + clientInfo.toString());
mSession.saveEx();
@ -323,11 +323,11 @@ public class AdempiereWebUI extends Window implements EventListener<Event>, IWeb
Env.getCtx().clear();
session.invalidate();
if (desktopCache != null)
desktopCache.removeDesktop(Executions.getCurrent().getDesktop());
//redirect to login page
Executions.sendRedirect("index.zul");
if (desktopCache != null)
desktopCache.removeDesktop(Executions.getCurrent().getDesktop());
}
public void logoutAfterTabDestroyed(){
Session session = logout0();

View File

@ -483,6 +483,7 @@ public class GridView extends Vbox implements EventListener<Event>, IdSpace, IFi
if (headerWidth > estimatedWidth)
estimatedWidth = headerWidth;
//TODO: test whether still needed for zk7
//hflex=min for first column not working well
if (i > 0)
{

View File

@ -314,7 +314,7 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria
w.getChildren().clear();
sideController.render(w, this, false);
Clients.response(new AuScript("$('.slimScroll .z-anchorlayout-body').slimScroll({height: '100%',railVisible: true, alwaysVisible: false});"));
Clients.response(new AuScript("$('.slimScroll.z-anchorlayout').slimScroll({height: '100%',railVisible: true, alwaysVisible: false});"));
}
public void onEvent(Event event)

View File

@ -65,7 +65,7 @@ public class HelpController
public HelpController()
{
dashboardLayout = new Anchorlayout();
dashboardLayout.setSclass("dashboard-layout slimScroll");
dashboardLayout.setSclass("dashboard-layout");
dashboardLayout.setVflex("1");
dashboardLayout.setHflex("1");
}
@ -73,7 +73,7 @@ public class HelpController
public void render(Component parent, IDesktop desktopImpl)
{
Style style = new Style();
style.setContent(".z-anchorlayout-body { overflow:auto } .z-anchorchildren { overflow:visible } ");
style.setContent(".z-anchorlayout { overflow:auto } .z-anchorchildren { overflow:visible } ");
style.setPage(parent.getPage());
parent.appendChild(dashboardLayout);

View File

@ -264,9 +264,11 @@ public class WAttachment extends Window implements EventListener<Event>
bLoad.setImage(ThemeManager.getThemeResource("images/Import24.png"));
bLoad.setSclass("img-btn");
bLoad.setAttribute("org.zkoss.zul.image.preload", Boolean.TRUE);
bLoad.setId("bLoad");
// bLoad.setAttribute("org.zkoss.zul.image.preload", Boolean.TRUE);
bLoad.setTooltiptext(Msg.getMsg(Env.getCtx(), "Load"));
bLoad.setUpload(AdempiereWebUI.getUploadSetting());
// bLoad.setUpload(AdempiereWebUI.getUploadSetting());
bLoad.setUpload("true,accept=audio/*|video/*|image/*|MIME_type,native");
bLoad.addEventListener(Events.ON_UPLOAD, this);
bDelete.addEventListener(Events.ON_CLICK, this);

View File

@ -66,6 +66,7 @@ public class WindowContainer extends AbstractUIPart
tabbox = new Tabbox();
tabbox.setSclass("desktop-tabbox");
tabbox.setId("desktop_tabbox");
tabbox.setMaximalHeight(true);
tabbox.addEventListener(ON_DEFER_SET_SELECTED_TAB, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
@ -76,8 +77,8 @@ public class WindowContainer extends AbstractUIPart
});
Tabpanels tabpanels = new Tabpanels();
tabpanels.setVflex("1");
tabpanels.setHflex("1");
tabpanels.setHeight("100%");
tabpanels.setWidth("100%");
Tabs tabs = new Tabs();
tabbox.appendChild(tabs);

View File

@ -37,10 +37,7 @@ import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.Session;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventThreadCleanup;
import org.zkoss.zk.ui.event.EventThreadInit;
import org.zkoss.zk.ui.event.EventThreadResume;
import org.zkoss.zk.ui.event.EventThreadSuspend;
import org.zkoss.zk.ui.sys.DesktopCache;
import org.zkoss.zk.ui.sys.DesktopCtrl;
import org.zkoss.zk.ui.sys.ServerPush;
@ -57,7 +54,7 @@ import org.zkoss.zk.ui.util.ExecutionInit;
* @version $Revision: 0.10 $
*/
public class SessionContextListener implements ExecutionInit,
ExecutionCleanup, EventThreadInit, EventThreadResume, EventThreadCleanup, EventThreadSuspend, DesktopCleanup, DesktopInit
ExecutionCleanup, EventThreadInit, DesktopCleanup, DesktopInit
{
public static final String SERVLET_SESSION_ID = "servlet.sessionId";
public static final String SESSION_CTX = "WebUISessionContext";
@ -121,6 +118,7 @@ public class SessionContextListener implements ExecutionInit,
*
* @see ExecutionInit#init(Execution, Execution)
*/
@Override
public void init(Execution exec, Execution parent)
{
//in servlet thread
@ -144,6 +142,7 @@ public class SessionContextListener implements ExecutionInit,
* @param errs
* @see ExecutionCleanup#cleanup(Execution, Execution, List)
*/
@Override
public void cleanup(Execution exec, Execution parent, List<Throwable> errs)
{
//in servlet thread
@ -163,6 +162,7 @@ public class SessionContextListener implements ExecutionInit,
* @param evt
* @see EventThreadInit#prepare(Component, Event)
*/
@Override
public void prepare(Component comp, Event evt)
{
//in servlet thread
@ -171,129 +171,22 @@ public class SessionContextListener implements ExecutionInit,
{
setupExecutionContextFromSession(Executions.getCurrent());
}
//set locale
Locales.setThreadLocal(Env.getLanguage(ServerContext.getCurrentInstance()).getLocale());
}
/**
* copy event thread's ThreadLocal to servlet thread
* @param comp
* @param evt
* @throws Exception
* @see {@link EventThreadSuspend#afterSuspend(Component, Event)}
*/
public void afterSuspend(Component comp, Event evt) throws Exception
{
//in servlet thread
if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid())
{
setupExecutionContextFromSession(Executions.getCurrent());
}
}
/**
* get from servlet thread's ThreadLocal
* @param comp
* @param evt
* @see EventThreadResume#beforeResume(Component, Event)
*/
public void beforeResume(Component comp, Event evt)
{
//in servlet thread
//check is thread local context have been setup
if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid())
{
setupExecutionContextFromSession(Executions.getCurrent());
}
}
/**
* @param comp
* @param evt
* @see EventThreadResume#abortResume(Component, Event)
*/
public void abortResume(Component comp, Event evt)
{
//in servlet thread
}
/**
* copy event thread's ThreadLocal to servlet thread's ThreadLocal
* @param comp
* @param evt
* @see EventThreadCleanup#complete(Component, Event)
*/
public void complete(Component comp, Event evt) throws Exception
{
//in servlet thread
if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid())
{
setupExecutionContextFromSession(Executions.getCurrent());
}
}
/**
* copy servlet thread's ThreadLocal to event thread's ThreadLocal
* @param comp
* @param evt
* @see EventThreadInit#init(Component, Event)
*/
@Override
public boolean init(Component comp, Event evt)
{
//in event processing thread
if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid())
{
setupExecutionContextFromSession(Executions.getCurrent());
}
//set locale
Locales.setThreadLocal(Env.getLanguage(ServerContext.getCurrentInstance()).getLocale());
return true;
}
/**
* get from event thread's ThreadLocal
* @param comp
* @param evt
* @param obj
* @throws Exception
* @see {@link EventThreadSuspend#beforeSuspend(Component, Event, Object)}
*/
public void beforeSuspend(Component comp, Event evt, Object obj)
throws Exception
{
//in event processing thread
}
/**
* copy servlet thread's ThreadLocal to event thread's ThreadLocal
* @param comp
* @param evt
* @see EventThreadResume#afterResume(Component, Event)
*/
public void afterResume(Component comp, Event evt)
{
//in event processing thread
if (ServerContext.getCurrentInstance().isEmpty() || !isContextValid())
{
setupExecutionContextFromSession(Executions.getCurrent());
}
//set locale
Locales.setThreadLocal(Env.getLanguage(ServerContext.getCurrentInstance()).getLocale());
}
/**
* get from event thread's ThreadLocal
* @param comp
* @param evt
* @param errs
* @see EventThreadCleanup#cleanup(Component, Event, List)
*/
public void cleanup(Component comp, Event evt, List<Throwable> errs) throws Exception
{
//in event processing thread
}
public static boolean isContextValid() {
Execution exec = Executions.getCurrent();
Properties ctx = ServerContext.getCurrentInstance();

View File

@ -355,7 +355,6 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
contentSimple.setStyle("width: 100%; position: relative");
contentSimple.makeNoStrip();
contentSimple.setHflex("1");
contentSimple.setSizedByContent(true);
Columns columns = new Columns();
Column column = new Column();
@ -441,7 +440,6 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
confirmPanel.setPack("end");
advancedPanel = new Listbox();
advancedPanel.setSizedByContent(true);
ListHead listhead = new ListHead();
listhead.setSizable(true);
@ -576,7 +574,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
winAdvanced = new Window();
winLookupRecord = new Window();
Tabpanel tabPanel = new Tabpanel();
tabPanel.setStyle("height: 100%; width: 99%; padding-right: 2px; margin: auto;");
tabPanel.setStyle("height: 100%; width: 100%; padding-right: 2px; margin: auto;");
tabPanel.appendChild(winLookupRecord);
tabPanel.setId("simpleSearch");
winMain.addTab(tabPanel, Msg.getMsg(Env.getCtx(), "Find").replaceAll("&", ""),false, true);

View File

@ -509,6 +509,16 @@ Copyright (C) 2005 Potix Corporation. All Rights Reserved.
the browser code.
</description>
</function>
<function>
<name>resolveThemeURL</name>
<function-class>org.zkoss.web.fn.ServletFns</function-class>
<function-signature>
java.lang.String resolveThemeURL(java.lang.String)
</function-signature>
<description>
Resolves a URL to point to resource served by the current theme.
</description>
</function>
<function>
<name>escapeXML</name>

View File

@ -183,4 +183,14 @@ Copyright (C) 2012 Potix Corporation. All Rights Reserved.
Loads a specific theme properties and apply them into the request scope
]]></description>
</function>
<function>
<name>getCurrentTheme</name>
<function-class>org.zkoss.web.fn.ThemeFns</function-class>
<function-signature>
java.lang.String getCurrentTheme()
</function-signature>
<description><![CDATA[
Returns the current theme name
]]></description>
</function>
</taglib>

View File

@ -70,6 +70,18 @@ Copyright (C) 2005 Potix Corporation. All Rights Reserved.
</description>
</function>
<function>
<name>isEditionValid</name>
<function-class>org.zkoss.zk.fn.ZkFns</function-class>
<function-signature>
boolean isEditionValid()
</function-signature>
<description>
Returns the edition whether valid or invalid.
</description>
</function>
<function>
<name>encodeWithZK</name>
<function-class>org.zkoss.zk.fn.ZkFns</function-class>

View File

@ -122,7 +122,7 @@
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/x-javascript</mime-type>
<mime-type>text/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>

View File

@ -148,7 +148,7 @@
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/x-javascript</mime-type>
<mime-type>text/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>

View File

@ -575,6 +575,7 @@
<xs:element ref="hbox" />
<xs:element ref="hlayout" />
<xs:element ref="html" />
<xs:element ref="idspace" />
<xs:element ref="iframe" />
<xs:element ref="image" />
<xs:element ref="imagemap" />
@ -585,6 +586,7 @@
<xs:element ref="longbox" />
<xs:element ref="menubar" />
<xs:element ref="menupopup" />
<xs:element ref="navbar" />
<xs:element ref="paging" />
<xs:element ref="panel" />
<xs:element ref="pivottable" />
@ -657,6 +659,7 @@
<xs:element ref="hbox" />
<xs:element ref="hlayout" />
<xs:element ref="html" />
<xs:element ref="idspace" />
<xs:element ref="iframe" />
<xs:element ref="image" />
<xs:element ref="imagemap" />
@ -667,6 +670,7 @@
<xs:element ref="longbox" />
<xs:element ref="menubar" />
<xs:element ref="menupopup" />
<xs:element ref="navbar" />
<xs:element ref="paging" />
<xs:element ref="panel" />
<xs:element ref="pivottable" />
@ -788,9 +792,27 @@
<xs:attribute name="align" type="alignAttrType" use="optional" />
<xs:attribute name="border" type="xs:string" use="optional" />
<xs:attribute name="src" type="xs:string" use="optional" />
<xs:attribute name="preload" type="audioPreloadAttrType" use="optional" />
<xs:attribute name="controls" type="booleanType" use="optional" />
<xs:attribute name="loop" type="booleanType" use="optional" />
<xs:attribute name="autostart" type="booleanType" use="optional" />
<xs:attribute name="autoplay" type="booleanType" use="optional" />
<xs:attributeGroup ref="rootAttrGroup" />
</xs:complexType>
<xs:simpleType name="audioPreloadAttrType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="none" />
<xs:enumeration value="auto" />
<xs:enumeration value="metadata" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="annotationType" />
</xs:simpleType>
</xs:union>
</xs:simpleType>
<!-- auxhead -->
<xs:element name="auxhead" type="auxheadType" />
<xs:complexType name="auxheadType">
@ -1595,6 +1617,14 @@
<xs:attribute name="content" type="xs:string" use="optional" />
<xs:attributeGroup ref="rootAttrGroup" />
</xs:complexType>
<!-- idspace -->
<xs:element name="idspace" type="idspaceType" />
<xs:complexType name="idspaceType" mixed="true">
<xs:group ref="anyGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attributeGroup ref="xulElementAttrGroup" />
<xs:attributeGroup ref="mouseExtAttrGroup" />
<xs:attributeGroup ref="rootAttrGroup" />
</xs:complexType>
<!-- iframe -->
<xs:element name="iframe" type="iframeType" />
<xs:complexType name="iframeType">
@ -1941,6 +1971,46 @@
<xs:group ref="baseGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attributeGroup ref="xulElementAttrGroup" />
</xs:complexType>
<!-- nav -->
<xs:element name="nav" type="navType" />
<xs:complexType name="navType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="baseGroup" />
<xs:element ref="navitem" />
</xs:choice>
<xs:attributeGroup ref="xulElementAttrGroup" />
<xs:attribute name="onOpen" type="xs:string" use="optional" />
</xs:complexType>
<!-- navbar -->
<xs:element name="navbar" type="navbarType" />
<xs:complexType name="navbarType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="baseGroup" />
<xs:element ref="nav" />
<xs:element ref="navitem" />
</xs:choice>
<xs:attributeGroup ref="xulElementAttrGroup" />
<xs:attribute name="orient" type="orientAttrType" use="optional" />
<xs:attribute name="collapsed" type="booleanType" use="optional" />
<xs:attribute name="onSelect" type="xs:string" use="optional" />
<xs:attributeGroup ref="rootAttrGroup" />
</xs:complexType>
<!-- navitem -->
<xs:element name="navitem" type="navitemType" />
<xs:complexType name="navitemType">
<xs:group ref="baseGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attributeGroup ref="labelImageElementAttrGroup" />
<xs:attribute name="href" type="xs:string" use="optional" />
<xs:attribute name="target" type="xs:string" use="optional" />
<xs:attribute name="disabled" type="booleanType" use="optional" />
<xs:attribute name="src" type="xs:string" use="optional" />
</xs:complexType>
<!-- navseparator -->
<xs:element name="navseparator" type="navseparatorType" />
<xs:complexType name="navseparatorType">
<xs:group ref="baseGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attributeGroup ref="xulElementAttrGroup" />
</xs:complexType>
<!-- north -->
<xs:element name="north" type="northType" />
<xs:complexType name="northType">
@ -2067,6 +2137,7 @@
<xs:element ref="portalchildren" />
</xs:choice>
<xs:attributeGroup ref="xulElementAttrGroup" />
<xs:attribute name="orient" type="orientAttrType" use="optional" />
</xs:complexType>
<!-- progressmeter -->
<xs:element name="progressmeter" type="progressmeterType" />
@ -2299,11 +2370,27 @@
<xs:attribute name="selectedIndex" type="intType" use="optional" />
<xs:attribute name="selectedTab" type="xs:string" use="optional" />
<xs:attribute name="selectedPanel" type="xs:string" use="optional" />
<xs:attribute name="orient" type="orientAttrType" use="optional" />
<xs:attribute name="orient" type="tabOrientAttrType" use="optional" />
<xs:attribute name="maximalHeight" type="booleanType" use="optional" />
<xs:attribute name="onRightClick" type="xs:string" use="optional" />
<xs:attribute name="onSelect" type="xs:string" use="optional" />
<xs:attributeGroup ref="rootAttrGroup" />
</xs:complexType>
<xs:simpleType name="tabOrientAttrType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="top" />
<xs:enumeration value="left" />
<xs:enumeration value="right" />
<xs:enumeration value="down" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="annotationType" />
</xs:simpleType>
</xs:union>
</xs:simpleType>
<!-- tabpanel -->
<xs:element name="tabpanel" type="tabpanelType" />
<xs:complexType name="tabpanelType" mixed="true">
@ -2355,7 +2442,7 @@
<!-- template -->
<xs:element name="template" type="templateType" />
<xs:complexType name="templateType">
<xs:group ref="baseGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:group ref="anyGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="src" type="xs:string" use="optional" />
<xs:attribute name="if" type="xs:string" use="optional" />
@ -2432,6 +2519,7 @@
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="baseGroup" />
<xs:element ref="auxhead" />
<xs:element ref="frozen" />
</xs:choice>
<xs:choice>
<xs:sequence>
@ -2864,6 +2952,9 @@
<xs:element ref="menu" />
<xs:element ref="menuitem" />
<xs:element ref="menuseparator" />
<xs:element ref="nav" />
<xs:element ref="navitem" />
<xs:element ref="navseparator" />
<xs:element ref="north" />
<xs:element ref="rows" />
<xs:element ref="row" />

View File

@ -1,37 +0,0 @@
//patch for jquery bug under firefox
(function(undefined) {
var rupper = /([A-Z]|^ms)/g;
if ( document.defaultView && document.defaultView.getComputedStyle ) {
var old = document.defaultView.getComputedStyle;
getComputedStyle = function( elem, name ) {
var ret, defaultView, computedStyle;
if ( !(defaultView = elem.ownerDocument.defaultView) ) {
return undefined;
}
if (name == undefined || name == null) {
try {
return old(elem, null);
} catch (err) {
return "";
}
}
name = name.replace( rupper, "-$1" ).toLowerCase();
try {
if ( (computedStyle = old( elem, null )) ) {
ret = computedStyle.getPropertyValue( name );
if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
ret = jQuery.style( elem, name );
}
}
} catch (err) {
return "";
}
return ret;
};
}
})();

File diff suppressed because one or more lines are too long

View File

@ -2,13 +2,15 @@
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Version: 1.0.6
* Version: 1.3.1
*
*/
(function(d){jQuery.fn.extend({slimScroll:function(m){var a=d.extend({wheelStep:20,width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:"0.2",railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,scroll:0,touchScrollStep:200},m);this.each(function(){function f(h,d,f){var g=h,e=b.outerHeight()-c.outerHeight();d&&(g=parseInt(c.css("top"))+
h*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),e),c.css({top:g+"px"}));j=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());g=j*(b[0].scrollHeight-b.outerHeight());f&&(g=h,h=g/b[0].scrollHeight*b.outerHeight(),h=Math.min(Math.max(h,0),e),c.css({top:h+"px"}));b.scrollTop(g);q();l()}function r(){s=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),A);c.css({height:s+"px"})}function q(){r();clearTimeout(w);j==~~j&&(n=a.allowPageScroll,x!=j&&b.trigger("slimscroll",
0==~~j?"top":"bottom"));x=j;s>=b.outerHeight()?n=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&e.stop(!0,!0).fadeIn("fast"))}function l(){a.alwaysVisible||(w=setTimeout(function(){if((!a.disableFadeOut||!p)&&!t&&!u)c.fadeOut("slow"),e.fadeOut("slow")},1E3))}var p,t,u,w,y,s,j,x,A=30,n=!1,b=d(this);if(b.parent().hasClass("slimScrollDiv")){var k=b.scrollTop(),c=b.parent().find(".slimScrollBar"),e=b.parent().find(".slimScrollRail");r();m&&("scrollTo"in m?k=parseInt(a.scrollTo):"scrollBy"in m&&(k+=parseInt(a.scrollBy)),
f(k,!1,!0))}else{a.height="auto"==a.height?b.parent().innerHeight():a.height;k=d("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var e=d("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.size,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=d("<div></div>").addClass(a.barClass).css({background:a.color,
width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.size,BorderRadius:a.size,MozBorderRadius:a.size,WebkitBorderRadius:a.size,zIndex:99}),z="right"==a.position?{right:a.distance}:{left:a.distance};e.css(z);c.css(z);b.wrap(k);b.parent().append(c);b.parent().append(e);c.draggable({axis:"y",containment:"parent",start:function(){u=!0},stop:function(){u=!1;l()},drag:function(){f(0,d(this).position().top,!1)}});e.hover(function(){q()},function(){l()});
c.hover(function(){t=!0},function(){t=!1});b.hover(function(){p=!0;q();l()},function(){p=!1;l()});b.bind("touchstart",function(a){a.originalEvent.touches.length&&(y=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){b.originalEvent.preventDefault();b.originalEvent.touches.length&&f((y-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0)});var v=function(a){if(p){a=a||window.event;var b=0;a.wheelDelta&&(b=-a.wheelDelta/120);a.detail&&(b=a.detail/3);f(b,!0);a.preventDefault&&!n&&
a.preventDefault();n||(a.returnValue=!1)}};(function(){window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)})();r();"bottom"==a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),f(0,!0)):"object"==typeof a.start&&(f(d(a.start).position().top,null,!0),a.alwaysVisible||c.hide())}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery);
(function(f){jQuery.fn.extend({slimScroll:function(h){var a=f.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:0.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:0.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},h);this.each(function(){function r(d){if(s){d=d||
window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&m(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function m(d,f,h){k=!1;var e=d,g=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),g),e=0<d?Math.ceil(e):Math.floor(e),c.css({top:e+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());
e=l*(b[0].scrollHeight-b.outerHeight());h&&(e=d,d=e/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),g),c.css({top:d+"px"}));b.scrollTop(e);b.trigger("slimscrolling",~~e);v();p()}function C(){window.addEventListener?(this.addEventListener("DOMMouseScroll",r,!1),this.addEventListener("mousewheel",r,!1),this.addEventListener("MozMousePixelScroll",r,!1)):document.attachEvent("onmousewheel",r)}function w(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),D);c.css({height:u+"px"});
var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function v(){w();clearTimeout(A);l==~~l?(k=a.allowPageScroll,B!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;B=l;u>=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&g.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(A=setTimeout(function(){a.disableFadeOut&&s||(x||y)||(c.fadeOut("slow"),g.fadeOut("slow"))},1E3))}var s,x,y,A,z,u,l,B,D=30,k=!1,b=f(this);if(b.parent().hasClass(a.wrapperClass)){var n=b.scrollTop(),
c=b.parent().find("."+a.barClass),g=b.parent().find("."+a.railClass);w();if(f.isPlainObject(h)){if("height"in h&&"auto"==h.height){b.parent().css("height","auto");b.css("height","auto");var q=b.parent().parent().height();b.parent().css("height",q);b.css("height",q)}if("scrollTo"in h)n=parseInt(a.scrollTo);else if("scrollBy"in h)n+=parseInt(a.scrollBy);else if("destroy"in h){c.remove();g.remove();b.unwrap();return}m(n,!1,!0)}}else{a.height="auto"==a.height?b.parent().height():a.height;n=f("<div></div>").addClass(a.wrapperClass).css({position:"relative",
overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var g=f("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=f("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?
"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),q="right"==a.position?{right:a.distance}:{left:a.distance};g.css(q);c.css(q);b.wrap(n);b.parent().append(c);b.parent().append(g);a.railDraggable&&c.bind("mousedown",function(a){var b=f(document);y=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);m(0,c.position().top,!1)});
b.bind("mouseup.slimscroll",function(a){y=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});g.hover(function(){v()},function(){p()});c.hover(function(){x=!0},function(){x=!1});b.hover(function(){s=!0;v();p()},function(){s=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(z=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&
(m((z-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),z=b.originalEvent.touches[0].pageY)});w();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),m(0,!0)):"top"!==a.start&&(m(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide());C()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery);

View File

@ -18,6 +18,10 @@ html,body {
background-color: #E5E5E5;
}
.login-window .z-window-content {
background-color: #E5E5E5;
}
.login-box-body {
width: 660px;
background-image: url(../images/login-box-bg.png);
@ -112,7 +116,7 @@ html,body {
.desktop-header {
background-color: #F4F4F4;
width: 100%;
height: 35px;
height: 46px;
border-bottom: 1px solid #C5C5C5;
}
@ -121,6 +125,11 @@ html,body {
font-size: 10px;
}
.desktop-header-username:hover {
color: blue;
text-decoration: underline;
}
.menu-href {
font-size: 11px;
font-weight: normal;
@ -146,12 +155,16 @@ html,body {
height: 10px;
}
.window-container-toolbar-btn .z-toolbarbutton-cnt img {
.z-toolbar.z-toolbar-tabs {
padding-top: 0px;
}
.window-container-toolbar-btn .z-toolbarbutton-content img {
width: 22px;
height: 22px;
}
.window-container-toolbar-btn.context-help-btn .z-toolbarbutton-cnt img {
.window-container-toolbar-btn.context-help-btn .z-toolbarbutton-content img {
width: 16px;
height: 16px;
padding: 3px 3px;
@ -181,7 +194,7 @@ html,body {
padding: 0px;
}
.z-toolbarbutton-cnt {
.z-toolbarbutton-content {
padding: 0px;
}
@ -190,8 +203,9 @@ html,body {
display:inline-block;
margin-left: 1px;
margin-right: 1px;
width: 26px;
height: 24px;
width: 28px;
height: 28px;
padding: 1px;
}
.breadcrumb-toolbar-button {
@ -210,13 +224,12 @@ html,body {
font-size: 12px;
}
.toolbar-button .z-toolbarbutton-body .z-toolbarbutton-cnt img {
width: 22px;
height: 22px;
padding: 0px 1px 0px 1px;
border-style: solid;
border-width: 1px;
border-color: transparent;
.toolbar-button .z-toolbarbutton-content {
width: 24px;
height: 24px;
padding: 1px;
border: none;
display: inline-block;
}
.depressed img {
@ -227,38 +240,7 @@ html,body {
}
<%-- button --%>
.z-button .z-button-tl,
.z-button .z-button-tr,
.z-button .z-button-bl,
.z-button .z-button-br
{
display: none;
background: none !important;
}
.z-button .z-button-tm,
.z-button .z-button-bm
{
display: none;
background: none !important;
}
.z-button .z-button-cl,
.z-button .z-button-cr
{
display: none;
background: none !important;
}
.z-button .z-button-cm
{
background: none !important;
border: none !important;
margin: 0 !important;
padding: 0 !important;
}
.z-button-os, .z-button {
.z-button {
display: inline-block;
margin: 0px;
padding: 4px 20px;
@ -293,23 +275,20 @@ html,body {
margin: 0px !important;
}
.z-button-os:hover, .z-button-over,
.z-button-os:focus, .z-button-focus,
.z-button-os:active, .z-button-clk,
.z-button-os.active,
.z-button-os.disabled, .z-button-disd,
.z-button-os[disabled] {
.z-button-hover,
.z-button-focus,
.z-button-click,
.z-button-disabled {
color: #333333;
background-color: #e6e6e6;
}
.z-button-os:active, .z-button-clk,
.z-button-os.active {
.z-button-click {
background-color: #cccccc \9;
}
.z-button-os:hover, .z-button-over,
.z-button-os:focus, .z-button-focus {
.z-button-hover,
.z-button-focus {
color: #333333;
text-decoration: none;
background-position: 0 -15px;
@ -319,12 +298,11 @@ html,body {
transition: background-position 0.1s linear;
}
.z-button-os:focus, .z-button-focus {
.z-button-focus {
outline: 5px auto -webkit-focus-ring-color;
}
.z-button-os.active, .z-button-clk,
.z-button-os:active {
.z-button-click {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
@ -332,8 +310,7 @@ html,body {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.z-button-os.disabled, .z-button-disd,
.z-button-os[disabled] {
.z-button-disabled {
cursor: default;
background-image: none;
opacity: 0.65;
@ -357,7 +334,7 @@ html,body {
display: inline-block;
}
.z-button-os.btn-small {
.z-button.btn-small {
padding: 1px 5px;
}
@ -374,7 +351,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
}
.desktop-user-panel {
text-align: right;
float: right;
}
.desktop-layout {
@ -392,22 +369,25 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
margin-right: 2px;
}
.desktop-tabbox .z-tab .z-tab-hl, .desktop-tabbox .z-tab .z-tab-hr,
.desktop-tabbox .z-tab .z-tab-hm {
height: 22px;
.desktop-tabbox .z-tab {
height: 24px;
}
.desktop-tabbox .z-tab-seld .z-tab-hl, .desktop-tabbox .z-tab-seld .z-tab-hr,
.desktop-tabbox .z-tab-seld .z-tab-hm {
height: 21px;
.desktop-tabbox .z-tab-selected {
height: 25px;
}
.desktop-tabbox .z-tab-seld {
.desktop-tabbox .z-tab-selected {
border-top: 2px solid #666;
border-top-left-radius: 5px 5px;
border-top-right-radius: 5px 5px;
}
.desktop-tabbox .z-tab .z-tab-text {
padding-top: 0px;
padding-bottom: 0px;
}
.desktop-north, .desktop-center {
border: none;
}
@ -425,16 +405,25 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
background-color: #FFFFFF
}
.menu-search-panel .z-comboitem-img {
.menu-search-panel .z-comboitem-image {
padding-bottom:4px;
}
.z-comboitem-img {
vertical-align:top;
.menu-search-panel-container .z-panel-body {
background-color: transparent;
}
.menu-search-panel-container .z-panel-top .z-toolbar.z-toolbar-panel {
padding-bottom: 0px;
padding-top: 8px;
}
.z-comboitem-image {
--vertical-align:top;
}
.z-combobox input {
vertical-align:top;
--vertical-align:top;
}
.menu-panel .z-toolbar-panel {
@ -457,17 +446,17 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
padding-top: 4px;
}
.desktop-left-column + .z-west-splt {
.desktop-left-column + .z-west-splitter {
border-top: none;
border-right: 1px solid #c5c5c5;
}
.desktop-right-column + .z-east-splt {
.desktop-right-column + .z-east-splitter {
border-top: none;
border-left: 1px solid #c5c5c5;
}
.z-south-splt, .z-west-splt, .z-east-splt, .z-north-splt {
.z-south-splitter, .z-west-splitter, .z-east-splitter, .z-north-splitter {
background: none !important;
}
@ -483,15 +472,15 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
border-top: 1px solid #c5c5c5;
}
.desktop-left-column .z-anchorlayout-body, .desktop-right-column .z-anchorlayout-body {
.desktop-left-column .z-anchorlayout, .desktop-right-column .z-anchorlayout {
overflow-x: hidden;
}
.z-anchorlayout-body { overflow:auto }
.z-anchorlayout { overflow:auto }
.z-anchorchildren { overflow:visible }
.slimScroll .z-anchorlayout-body { overflow:hidden }
.slimScroll.z-anchorlayout { overflow:hidden }
.desktop-hometab {
margin-left: 4px !important;
@ -508,13 +497,13 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
margin: 0px !important;
}
.desktop-tabbox .z-tabs .z-toolbar-tabs .z-toolbarbutton-over .z-toolbarbutton-body {
.desktop-tabbox .z-tabs .z-toolbar-tabs .z-toolbarbutton-hover {
border: none !important;
padding: 0px !important;
margin: 0px !important;
}
.desktop-tabbox .z-tabs .z-toolbar-tabs .z-toolbarbutton-over .z-toolbarbutton-cnt {
.desktop-tabbox .z-tabs .z-toolbar-tabs .z-toolbarbutton-hover .z-toolbarbutton-content {
background-image: none !important;
background-color:#DDD !important;
padding: 0px !important;
@ -540,33 +529,27 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
.desktop-home-tabpanel {
background-color: #FFFFFF;
width: 99% !important;
width: 100% !important;
}
.link {
cursor:pointer;
padding: 2px 2px 4px 4px;
border: none !important;
}
.link.z-toolbarbutton-over {
border: none;
padding: 1px 0;
}
.link.z-toolbarbutton-over .z-toolbarbutton-body {
border: none;
padding: 0 1px;
}
.link.z-toolbarbutton-over .z-toolbarbutton-cnt {
background-image: none;
color: blue;
.link.z-toolbarbutton:hover {
border: none !important;
background-image: none !important;
text-decoration: underline;
}
.link.z-toolbarbutton:hover span {
color: blue;
}
<%-- dashlet --%>
.z-panel-tl, .z-panel-tr,
.z-panel-hr, .z-panel-hl,
.z-panel-hm {
.z-panel-head {
background-image: none; background-color: #FFFFFF;
}
@ -584,12 +567,12 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
border: none;
}
.z-panel-hl {
.z-panel-head {
padding-bottom: 4px;
border-bottom: none;
border: none;
}
.z-panel-hl .z-panel-header {
.z-panel-head .z-panel-header {
padding: 0 0 2px 0;
color: #262626;
background: #F4F4F4;
@ -597,7 +580,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
font-size: 13px;
}
.z-caption .z-caption-l, .z-caption .z-caption-r {
.z-caption .z-caption-content {
padding: 0 0 2px 0;
color: #262626;
font-weight: 300;
@ -605,9 +588,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
cursor: move;
}
.desktop-home-tabpanel .z-panel-tl, .desktop-home-tabpanel .z-panel-tr,
.desktop-home-tabpanel .z-panel-hr, .desktop-home-tabpanel .z-panel-hl,
.desktop-home-tabpanel .z-panel-hm {
.desktop-home-tabpanel .z-panel-head {
background-color: #FFFFFF;
}
@ -717,7 +698,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
width: 100%;
}
.activities-box .z-button-os {
.activities-box .z-button {
text-align: left;
}
@ -805,11 +786,11 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
overflow-y: visible;
}
.adwindow-detailpane-tabbox .z-tab-seld span.z-tab-text {
.adwindow-detailpane-tabbox .z-tab-selected span.z-tab-text {
cursor: pointer;
}
.adwindow-detailpane-tabbox .z-tab-seld span.z-tab-text:hover {
.adwindow-detailpane-tabbox .z-tab-selected span.z-tab-text:hover {
text-decoration: underline;
}
@ -860,7 +841,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
height: 200px;
}
.adwindow-gridview-detail + .z-south-splt {
.adwindow-gridview-detail + .z-south-splitter {
border-top: 1px solid #C5C5C5;
border-bottom: 1px solid #C5C5C5;
}
@ -913,7 +894,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
background-color: #F9F9F9;
}
.adtab-form-borderlayout .z-south-colpsd:before {
.adtab-form-borderlayout .z-south-collapsed:before {
content: '${u:cleanAmp(u:getMsg(u:getCtx(), "Detail"))}';
position: relative;
font-size: 12px;
@ -928,7 +909,7 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
background-image: none !important;
}
.z-grid tbody tr.highlight td.row-indicator-seld {
.z-grid tbody tr.highlight td.row-indicator-selected {
background-color: transparent !important;
background-image: url(${c:encodeURL('/theme/default/images/EditRecord16.png')}) !important;
background-position: center;
@ -983,26 +964,31 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
width: 99%;
}
.form-button img {
width: 16px;
height: 16px;
}
<%-- Combobox --%>
.z-combobox-disd {
.z-combobox-disabled {
color: black !important; cursor: default !important; opacity: 1; -moz-opacity: 1; -khtml-opacity: 1; filter: alpha(opacity=100);
}
.z-combobox-disd * {
.z-combobox-disabled * {
color: black !important; cursor: default !important;
}
.z-combobox-text-disd {
.z-combobox-text-disabled {
background-color: #ECEAE4 !important;
}
<%-- Button --%>
.z-button-disd {
.z-button-disabled {
color: black; cursor: default; opacity: .6; -moz-opacity: .6; -khtml-opacity: .6; filter: alpha(opacity=60);
}
<%-- highlight focus form element --%>
input:focus, textarea:focus, .z-combobox-inp:focus, z-datebox-inp:focus {
input:focus, textarea:focus, .z-combobox-input:focus, z-datebox-input:focus {
border: 1px solid #0000ff;
}
@ -1010,7 +996,7 @@ input:focus, textarea:focus, .z-combobox-inp:focus, z-datebox-inp:focus {
text-decoration: none; font-size: xx-small; vertical-align: top; color:red;
}
<%-- menu tree cell --%>
.menu-treecell-cnt div {
.menu-treecell-cnt {
border: 0; margin: 0; padding: 0;
font-family: ${c:property('org.zkoss.zul.theme.fontFamilyC')};
font-size: ${c:property('org.zkoss.zul.theme.fontSizeM')};
@ -1021,16 +1007,17 @@ input:focus, textarea:focus, .z-combobox-inp:focus, z-datebox-inp:focus {
cursor: pointer;
}
span.z-tree-tee, span.z-tree-last, span.z-tree-firstspacer {
width:0px;
.z-treecell-content {
font-family: ${c:property('org.zkoss.zul.theme.fontFamilyC')};
font-size: ${c:property('org.zkoss.zul.theme.fontSizeM')};
}
.z-west-colpsd {
.z-west-collapsed {
cursor: pointer;
border-top: none;
}
.z-east-colpsd {
.z-east-collapsed {
cursor: pointer;
border-top: none;
}
@ -1042,10 +1029,10 @@ span.z-tree-tee, span.z-tree-last, span.z-tree-firstspacer {
.z-intbox-focus, .z-intbox-focus input,
.z-longbox-focus, .z-longbox-focus input,
.z-doublebox-focus, .z-doublebox-focus input,
.z-combobox-focus .z-combobox-inp,
.z-checkbox-focus .z-checkbox-inp,
.z-datebox-focus .z-datebox-inp,
.z-timebox-focus .z-timebox-inp {
.z-combobox-focus .z-combobox-input,
.z-checkbox-focus .z-checkbox-input,
.z-datebox-focus .z-datebox-input,
.z-timebox-focus .z-timebox-input {
background: #FFFFCC;
}
@ -1151,6 +1138,7 @@ tr.z-group {
overflow: hidden !important;
border-bottom: 1px solid #CFCFCF !important;
border-top: 1px solid #CFCFCF !important;
padding: 4px 5px;
}
<%-- Tablet --%>
@ -1162,15 +1150,12 @@ tr.z-group {
.z-tab-close {
top:4px;
margin-right:2px;
}
.z-tab-hm-close {
padding-right:18px;
}
<%-- set color for text and label --%>
.z-tab-seld .z-tab-text, .z-tab .z-tab-text, div.z-treefooter-cnt, div.z-treecell-cnt, div.z-treecol-cnt,
.z-label, .z-toolbarbutton-cnt, tr.z-treerow, tr.z-treerow a, tr.z-treerow a:visited {
.z-tab-selected .z-tab-text, .z-tab .z-tab-text, div.z-treefooter-content, div.z-treecell-content, div.z-treecol-content,
.z-label, .z-toolbarbutton-content, tr.z-treerow, tr.z-treerow a, tr.z-treerow a:visited {
color: #333;
font-family: Helvetica,Arial,sans-serif;
}
@ -1180,10 +1165,6 @@ tr.z-group {
background-color: #F0F0F0;
}
span.z-tab-text {
height: 13px;
}
<%-- menu tree cell --%>
div.z-tree-body td.menu-tree-cell {
cursor: pointer;
@ -1229,7 +1210,7 @@ div.simileAjax-bubble-container {
z-index: 2800 !important;
}
.info-panel .z-window-overlapped-bl, .info-panel .z-window-highlighted-bl {
.info-panel .z-window-overlapped, .info-panel .z-window-highlighted {
background-color: #F4F4F4 !important;
}
@ -1252,7 +1233,7 @@ div.simileAjax-bubble-container {
background-color: #F4F4F4;
}
.info-panel .z-window-highlighted-cnt {
.info-panel .z-window-highlighted .z-window-content {
padding: 0px;
}
@ -1260,13 +1241,12 @@ div.simileAjax-bubble-container {
border: none;
}
.z-window-embedded-cnt, .z-window-embedded-cm {
.z-window-embedded .z-window-content {
border: none;
}
.z-window-embedded-tl, .z-window-embedded-tr, .z-window-embedded-hl, .z-window-embedded-hr,
.z-window-embedded-hm, .z-window-embedded-cl, .z-window-embedded-cr,
.z-window-embedded-bl, .z-window-embedded-br {
.z-window-embedded .z-window-header,
.z-window-embedded .z-window-content {
background-image: none;
}
@ -1324,8 +1304,7 @@ tbody.z-grid-empty-body td {
}
<%-- notification message --%>
.z-notification .z-notification-cl,
.z-notification .z-notification-cnt {
.z-notification .z-notification-content {
width: 400px;
}
@ -1334,11 +1313,11 @@ tbody.z-grid-empty-body td {
}
<%-- toolbar popup dialog --%>
.toolbar-popup-window .z-window-popup-cnt {
margin-top: 6px;
.toolbar-popup-window .z-window-popup .z-window-content {
--margin-top: 6px;
}
.toolbar-popup-window.process-buttons-popup .z-button-os {
.toolbar-popup-window.process-buttons-popup .z-button {
white-space: nowrap;
width: 95%;
text-align: left;
@ -1349,29 +1328,25 @@ tbody.z-grid-empty-body td {
}
.toolbar-popup-window::before {
content: '';
border-bottom: 7px solid rgba(0, 0, 0, 0.2);
border-left: 7px solid transparent;
border-right: 7px solid transparent;
content: "";
display: inline-block;
left: 9px;
position: absolute;
width: 0px;
height: 0px;
top: -7px;
left: 6px;
border-top: 7px dashed transparent;
border-left: 7px dashed transparent;
border-right: 7px dashed transparent;
border-bottom: 7px solid #ACACAC;
}
.toolbar-popup-window-cnt::before {
content: '';
.toolbar-popup-window::after {
border-bottom: 6px solid #FFFFFF;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
content: "";
display: inline-block;
left: 10px;
position: absolute;
width: 0px;
height: 0px;
top: -5px;
left: 7px;
border-top: 6px dashed transparent;
border-left: 6px dashed transparent;
border-right: 6px dashed transparent;
border-bottom: 6px solid #FFF;
top: -6px;
}
.adwindow-detailpane-sub-tab::before {
@ -1387,27 +1362,41 @@ tbody.z-grid-empty-body td {
border-bottom: 5px solid transparent;
}
i.grid-combobox-editor {
width: 99% !important;
span.grid-combobox-editor {
width: 100% !important;
position: relative;
}
.grid-combobox-editor input {
width: 100% !important;
padding-right: 22px;
box-sizing: border-box;
-moz-box-sizing: border-box; /* Firefox */
height: 21px;
padding-right: 26px;
border-bottom-right-radius: 6px;
border-top-right-radius: 6px;
border-right: 0px;
}
.grid-combobox-editor .z-combobox-btn {
.grid-combobox-editor.z-combobox-disabled input {
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
border-right: 1px solid #cfcfcf;
padding-right: 5px;
}
.grid-combobox-editor .z-combobox-button {
position: absolute;
right: 0px;
top: 0px;
border-radius: 0px 0px;
top: 1px;
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
border-bottom-left-radius: 0px;
border-top-left-radius: 0px;
}
.grid-combobox-editor.z-combobox-focus .z-combobox-btn {
.grid-combobox-editor input:focus {
border-right: 0px;
}
.grid-combobox-editor input:focus + .z-combobox-button {
border-left: 1px solid #0000ff;
}
@ -1420,67 +1409,46 @@ i.grid-combobox-editor {
font-weight: bold;
}
.z-window-embedded-cnt {
.z-window-embedded .z-window-content {
border: none;
}
.z-window-overlapped-cm, .z-window-modal-cm, .z-window-highlighted-cm, .z-window-embedded-cm {
.z-window-overlapped .z-window-content, .z-window-modal .z-window-content,
.z-window-highlighted .z-window-content, .z-window-embedded .z-window-content {
border: none;
}
.z-window-overlapped-tl, .z-window-popup-tl, .z-window-modal-tl, .z-window-highlighted-tl, .embedded-dialog .z-window-embedded-tl
{
display: none;
}
.z-window-overlapped-tr, .z-window-popup-tr, .z-window-modal-tr, .z-window-highlighted-tr, .embedded-dialog .z-window-embedded-tr
{
display: none;
}
.z-window-overlapped-hl, .z-window-popup-hl, .z-window-modal-hl, .z-window-highlighted-hl, .embedded-dialog .z-window-embedded-hl {
.z-window-overlapped .z-window-header, .z-window-popup .z-window-header,
.z-window-modal .z-window-header, .z-window-highlighted .z-window-header, .embedded-dialog .z-window-embedded. .z-window-header {
padding-top: 3px;
}
.z-window-overlapped-tl, .z-window-popup-tl, .z-window-modal-tl, .z-window-highlighted-tl, .embedded-dialog .z-window-embedded-tl,
.z-window-overlapped-tr, .z-window-popup-tr, .z-window-modal-tr, .z-window-highlighted-tr, .embedded-dialog .z-window-embedded-tr,
.z-window-overlapped-hm, .z-window-popup-hm, .z-window-modal-hm, .z-window-highlighted-hm, .embedded-dialog .z-window-embedded-hm,
.z-window-overlapped-hl, .z-window-popup-hl, .z-window-modal-hl, .z-window-highlighted-hl, .embedded-dialog .z-window-embedded-hl,
.z-window-overlapped-hr, .z-window-popup-hr, .z-window-modal-hr, .z-window-highlighted-hr, .embedded-dialog .z-window-embedded-hr
{
.z-window .z-window-header {
background-color: #484848;
}
.z-window-overlapped-cl, .z-window-popup-cl, .z-window-modal-cl, .z-window-highlighted-cl, .embedded-dialog .z-window-embedded-cl
.z-window-overlapped .z-window-content, .z-window-popup .z-window-content,
.z-window-modal .z-window-content, .z-window-highlighted .z-window-content,
.embedded-dialog .z-window-embedded .z-window-content
{
padding-left: 1px;
border-left: 1px solid #c5c5c5;
}
.z-window-overlapped-cr, .z-window-popup-cr, .z-window-modal-cr, .z-window-highlighted-cr, .embedded-dialog .z-window-embedded-cr
{
padding-right: 1px;
border-right: 1px solid #c5c5c5;
}
.z-window-overlapped-bl, .z-window-popup-bl, .z-window-modal-bl, .z-window-highlighted-bl, .embedded-dialog .z-window-embedded-bl
.z-window-overlapped, .z-window-popup, .z-window-modal, .z-window-highlighted,
.embedded-dialog .z-window-embedded
{
border-left: 1px solid #c5c5c5;
border-right: 1px solid #c5c5c5;
background-color: #fff;
margin: 0px;
padding-bottom: 3px;
}
.z-window-overlapped-br, .z-window-popup-br, .z-window-modal-br, .z-window-highlighted-br, .embedded-dialog .z-window-embedded-br
{
display: none;
}
.z-window-overlapped .z-window-overlapped-header,
.z-window-popup .z-window-popup-header,
.z-window-modal .z-window-modal-header,
.z-window-highlighted .z-window-highlighted-header
.z-window-overlapped .z-window-header,
.z-window-popup .z-window-header,
.z-window-modal .z-window-header,
.z-window-highlighted .z-window-header
{
color: #fff;
font-weight: bold;
@ -1492,16 +1460,7 @@ i.grid-combobox-editor {
border-bottom: 1px solid #c5c5c5 !important;
}
.z-window-overlapped-hl, .z-window-popup-hl, .z-window-modal-hl, .z-window-highlighted-hl, .z-window-embedded-hl,
.z-window-overlapped-hr, .z-window-popup-hr, .z-window-modal-hr, .z-window-highlighted-hr, .z-window-embedded-hr,
.z-window-overlapped-hm, .z-window-popup-hm, .z-window-modal-hm, .z-window-highlighted-hm, .z-window-embedded-hm,
.z-window-overlapped-cl, .z-window-popup-cl, .z-window-modal-cl, .z-window-highlighted-cl, .z-window-embedded-cl,
.z-window-overlapped-cr, .z-window-popup-cr, .z-window-modal-cr, .z-window-highlighted-cr, .z-window-embedded-cr,
.z-window-overlapped-tl, .z-window-popup-tl, .z-window-modal-tl, .z-window-highlighted-tl, .z-window-embedded-tl,
.z-window-overlapped-tr, .z-window-popup-tr, .z-window-modal-tr, .z-window-highlighted-tr, .z-window-embedded-tr,
.z-window-overlapped-bl, .z-window-popup-bl, .z-window-modal-bl, .z-window-highlighted-bl, .z-window-embedded-bl,
.z-window-overlapped-br, .z-window-popup-br, .z-window-modal-br, .z-window-highlighted-br, .z-window-embedded-br
{
.z-window-header, .z-window-content {
background-image: none !important;
}
@ -1511,18 +1470,18 @@ i.grid-combobox-editor {
}
<%-- Splitter button --%>
.z-east-splt-btn,
.z-west-splt-btn,
.z-north-splt-btn,
.z-south-splt-btn {
.z-east-splitter-button,
.z-west-splitter-button,
.z-north-splitter-button,
.z-south-splitter-button {
filter: alpha(opacity=100); <%-- IE --%>
opacity: 1.0; <%-- Moz + FF --%>
}
.z-east-splt-btn-over,
.z-west-splt-btn-over,
.z-north-splt-btn-over,
.z-south-splt-btn-over {
.z-east-splitter-button-over,
.z-west-splitter-button-over,
.z-north-splitter-button-over,
.z-south-splitter-button-over {
-webkit-filter: brightness(50%);
filter: brightness(50%);
}
@ -1590,21 +1549,23 @@ font-size: 0;
border: 1px solid #ababab;
}
.menu-search-toggle-box .z-toolbarbutton-over {
.menu-search-toggle-box .z-toolbarbutton-hover {
border: none;
}
.menu-search-toggle-off {
margin:0px;
padding: 1px 4px 1px 4px;
border-radius: 0px;
}
.menu-search-toggle-on {
background: #999999;
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset;
margin:0px;
padding: 1px 4px 1px 4px;
background: #999999 !important;
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset !important;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset !important;
margin:0px !important;
padding: 1px 4px 1px 4px !important;
border-radius: 0px;
}
.menu-search-toggle-on img, .menu-search-toggle-off img {
@ -1612,16 +1573,13 @@ font-size: 0;
width: 16px;
}
<%-- workaround for http://jira.idempiere.com/browse/IDEMPIERE-692 --%>
.z-combobox-pp {
.z-combobox-popup {
max-height: 200px;
}
<%-- dialog --%>
.popup-dialog .z-window-overlapped-cnt, .popup-dialog .z-window-highlighted-cnt {
.popup-dialog .z-window-overlapped .z-window-content, .popup-dialog .z-window-highlighted .z-window-content {
padding: 0px;
}
.popup-dialog .z-window-overlapped-bl, .popup-dialog .z-window-highlighted-bl {
background-color: #f5f5f5;
}
@ -1776,8 +1734,8 @@ table.z-vbox > tbody > tr > td > table {
margin-top: 5px;
}
.find-window-simple .img-btn, .find-window-simple .img-btn.btn-ok.z-button-os, .find-window-simple .img-btn.btn-cancel.z-button-os,
.find-window-advanced .img-btn, .find-window-advanced .img-btn.btn-ok.z-button-os, .find-window-advanced .img-btn.btn-cancel.z-button-os {
.find-window-simple .img-btn, .find-window-simple .img-btn.btn-ok.z-button, .find-window-simple .img-btn.btn-cancel.z-button,
.find-window-advanced .img-btn, .find-window-advanced .img-btn.btn-ok.z-button, .find-window-advanced .img-btn.btn-cancel.z-button {
margin: 0 2px;
}
@ -1891,7 +1849,7 @@ table.z-vbox > tbody > tr > td > table {
.payment-rule-editor .z-combobox {
width: 100%;
}
.payment-rule-editor .z-combobox-inp {
.payment-rule-editor .z-combobox-input {
box-sizing: border-box;
-moz-box-sizing: border-box; /* Firefox */
display: inline-block;
@ -1899,13 +1857,13 @@ table.z-vbox > tbody > tr > td > table {
width: 100%;
height: 21px;
}
.payment-rule-editor .z-combobox-inp:focus {
.payment-rule-editor .z-combobox-input:focus {
border: 1px solid #0000ff;
}
.payment-rule-editor .z-combobox-inp.editor-input-disd {
.payment-rule-editor .z-combobox-input.editor-input-disd {
padding-right: 22px !important;
}
.payment-rule-editor .z-combobox-btn {
.payment-rule-editor .z-combobox-button {
padding: 0px;
margin: 0px;
display: inline-block;
@ -1914,10 +1872,10 @@ table.z-vbox > tbody > tr > td > table {
right: 22px;
top: 1px;
}
.payment-rule-editor .z-combobox.no-button .z-combobox-btn {
.payment-rule-editor .z-combobox.no-button .z-combobox-button {
right: 1px;
}
.payment-rule-editor .z-combobox .z-combobox-btn-over {
.payment-rule-editor .z-combobox .z-combobox-button-hover {
background-color: #ddd;
background-position: 0px 0px;
}

View File

@ -11,7 +11,7 @@
</west>
<center sclass="desktop-header-right">
<vbox apply="org.adempiere.webui.panel.UserPanel" height="100%" align="right"
style="position: absolute; text-align:right;" hflex="1" vflex="1"
hflex="1" vflex="1"
sclass="desktop-user-panel">
<vbox>
<label use="org.adempiere.webui.component.Label" id="loginUserAndRole"

View File

@ -98,7 +98,10 @@ Import-Package: bsh,
org.codehaus.groovy.vmplugin.v4,
org.codehaus.groovy.vmplugin.v5,
org.osgi.framework;version="1.3.0",
org.osgi.service.component;version="1.1.0"
org.osgi.service.component;version="1.1.0",
org.slf4j;version="1.6.1",
org.slf4j.helpers;version="1.6.1",
org.slf4j.spi;version="1.6.1"
Bundle-ClassPath: .,
lib/asm.jar,
lib/cglib.jar,

View File

@ -16,26 +16,28 @@ Copyright (C) 2005 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.util.resource;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Collections;
import java.util.Iterator;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.util.CollectionsX;
import org.zkoss.zk.library.Activator;
import org.zkoss.idom.Document;
import org.zkoss.idom.Element;
import org.zkoss.idom.input.SAXBuilder;
import org.zkoss.idom.util.IDOMs;
import org.zkoss.util.CollectionsX;
import org.zkoss.util.logging.Log;
import org.zkoss.zk.library.Activator;
import org.zkoss.idom.input.SAXBuilder;
/**
* The locator searches the current thread's context class loader,
@ -50,7 +52,7 @@ import org.zkoss.zk.library.Activator;
* @author tomyeh
*/
public class ClassLocator implements XMLResourcesLocator {
private static final Log log = Log.lookup(ClassLocator.class);
private static final Logger log = LoggerFactory.getLogger(ClassLocator.class);
public ClassLocator() {
}
@ -94,14 +96,14 @@ public class ClassLocator implements XMLResourcesLocator {
final XMLResource xr = new XMLResource(url, elName, elDepends);
final XMLResource old = rcmap.put(xr.name, xr);
if (old != null)
log.warning("Replicate resource: "+xr.name
log.warn("Replicate resource: "+xr.name
+"\nOverwrite "+old.url+"\nwith "+xr.url);
//it is possible if zcommon.jar is placed in both
//WEB-INF/lib and shared/lib, i.e., appear twice in the class path
//We overwrite because the order is the parent class loader first
//so WEB-INF/lib is placed after
}
// if (rcmap.isEmpty() && log.debugable()) log.debug("No resouce is found for "+name);
// if (rcmap.isEmpty() && log.isDebugEnabled()) log.debug("No resource is found for "+name);
final List<Resource> rcs = new LinkedList<Resource>(); //a list of Document
final Set<String> resolving = new LinkedHashSet<String>();
@ -123,13 +125,13 @@ public class ClassLocator implements XMLResourcesLocator {
for (String nm: xr.depends) {
final XMLResource dep = rcmap.remove(nm);
if (dep != null) //not resolved yet
resolveDependency(dep, rcs, rcmap, resolving); //recusrively
resolveDependency(dep, rcs, rcmap, resolving); //recursively
}
rcs.add(new Resource(xr.url, xr.document));
resolving.remove(xr.name);
if (log.debugable()) log.debug("Adding resolved resource: "+xr.name);
if (log.isDebugEnabled()) log.debug("Adding resolved resource: "+xr.name);
}
/** Info used with getDependentXMLResource. */
private static class XMLResource {
@ -140,7 +142,7 @@ public class ClassLocator implements XMLResourcesLocator {
private XMLResource(URL url, String elName, String elDepends)
throws IOException{
if (log.debugable()) log.debug("Loading "+url);
if (log.isDebugEnabled()) log.debug("Loading "+url);
try {
this.document = new SAXBuilder(false, false, true).build(url);
} catch (Exception ex) {
@ -160,7 +162,7 @@ public class ClassLocator implements XMLResourcesLocator {
} else {
this.depends = new LinkedList<String>();
CollectionsX.parse(this.depends, deps, ',');
if (log.finerable()) log.finer(this.name+" depends on "+this.depends);
if (log.isTraceEnabled()) log.trace(this.name+" depends on "+this.depends);
}
}
public String toString() {

View File

@ -22,8 +22,9 @@ import java.net.URL;
import javax.servlet.ServletContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.lang.SystemException;
import org.zkoss.util.logging.Log;
import org.zkoss.web.servlet.Servlets;
/**
@ -44,7 +45,7 @@ import org.zkoss.web.servlet.Servlets;
* @author tomyeh
*/
public class ResourceCaches {
private static final Log log = Log.lookup(ResourceCaches.class);
private static final Logger log = LoggerFactory.getLogger(ResourceCaches.class);
/** Loads, parses and returns the resource of the specified URI,
* or null if not found. The parser is defined by the loader defined
@ -61,7 +62,7 @@ public class ResourceCaches {
V get(ResourceCache<V> cache, ServletContext ctx, String path, Object extra) {
//20050905: Tom Yeh
//We don't need to handle the default name if user specifies only a dir
//because it is handled by the container directlys
//because it is handled by the container directly
//And, web developer has to specify <welcome-file> in web.xml
URL url = null;
if (path == null || path.length() == 0) path = "/";
@ -93,7 +94,7 @@ public class ResourceCaches {
Servlets.getExtendletContext(ctx, ctxpath.substring(1));
if (extctx != null) {
url = extctx.getResource(path);
// if (log.debugable()) log.debug("Resolving "+path0+" to "+url);
// if (log.isDebugEnabled()) log.debug("Resolving "+path0+" to "+url);
if (url == null)
return null;
try {
@ -102,14 +103,14 @@ public class ResourceCaches {
final IOException ioex = getIOException(ex);
if (ioex == null)
throw SystemException.Aide.wrap(ex);
log.warningBriefly("Unable to load "+url, ioex);
log.warn("Unable to load "+url, ioex);
}
return null;
}
ctx = ctx.getContext(ctxpath);
if (ctx == null) { //failed
// if (log.debugable()) log.debug("Context not found: "+ctxpath);
// if (log.isDebugEnabled()) log.debug("Context not found: "+ctxpath);
ctx = ctx0; path = path0;//restore
}
}
@ -125,7 +126,7 @@ public class ResourceCaches {
final IOException ioex = getIOException(ex);
if (ioex == null)
throw SystemException.Aide.wrap(ex);
log.warningBriefly("Unable to load "+flnm, ioex);
log.warn("Unable to load "+flnm, ioex);
}
return null;
}
@ -142,7 +143,7 @@ public class ResourceCaches {
final IOException ioex = getIOException(ex);
if (ioex == null)
throw SystemException.Aide.wrap(ex);
log.warningBriefly("Unable to load "+path, ioex);
log.warn("Unable to load "+path, ioex);
}
return null;
}