% /*
$Revision$
$Id$
File: iface.inc
Description: generic interface functions for buttons and maybe more
*/ %>
<%
if (JSON_Result)
__SafeLog("JSON_Result staat aan, dan is iface.inc includen erg onlogisch.");
FCLTHeader.Requires({ plugins: ["jQuery"], js: ["iface.js"]})
var isPrinting = getQParamInt("print", 0) == 1;
function CreateButton(tekst, onClick, btn, params) //akey, id, params)
{
btn = btn || {};
params = params || {}; // voor alle buttons
var hasIcon = (params.showIcons || btn.showIcon) && btn.icon;
var cls = (params.isDialog? "dialog ": "") + (hasIcon? "hasIcon ": "") + (btn.xclass ? btn.xclass : "");
if (!params.isDialog && tekst)
{
if (!btn.tooltip) // Alles voor de eerste \n komt in de button, alles erna in de tooltip
{
var arr = tekst.split("\n");
tekst = arr[0];
// In de tooltip hoeven we de tekst niet (ook) nog een keer te tonen
// Let wel: Omdat we ooit responsive op een klein scherm de teksten
// onderdrukken dan moet de tooltip toch blijven
//arr.shift(); // eerste er af
btn.tooltip = arr.join("\n");
}
}
var display = params.display || 'block';
%>
<%
}
// Buttons is een hash
// Velden: title, action en id
// params: { showIcons : false boolean om (alleen) de icons te tonen en niet de teksten
// showText : true boolean om de tekst te doen
// vertical : false
// autoshowOnly: false
// autoshow : false
// }
var HAMBUTTONS = ["print.png", "email.png", "csv.png", "fa-print", "fa-table", "fa-refresh", "page_refresh.png", "legenda.png"];
function CreateButtons(buttons, params)
{
params = params || {};
if (typeof params.showText == "undefined") params.showText = true;
if (buttons)
{
%>
<%
if (1&¶ms.entersubmit)
{ // too bad this hidden button takes up some space, especially with the vertical buttons
%><%
}
var hambuttons = [];
for (var i=0; i< buttons.length; i++)
{
var btn = buttons[i];
if (!params.autoshowOnly || btn.autoshow)
if (inArray(btn.icon, HAMBUTTONS))
hambuttons.push(i)
else
CreateButton(btn.title, btn.action, btn, params);
}
if (hambuttons.length && !params.isDialog)
{
var btn = { icon: "fa-bars", tooltip: L("lcl_more"), id: "printhamburger",
action: "$('li.byHamburger').toggleClass('hidden');FcltMgr.resized();" }
CreateButton(null, btn.action, btn, params );
// z-index floating header = 10, so z-index hamburger = 11
Response.write("
");
for (var x in hambuttons) {
var btn = buttons[hambuttons[x]];
btn.xclass = 'hidden byHamburger';
CreateButton(btn.title, "$('li.byHamburger').toggleClass('hidden');" + btn.action, btn, { showIcons: true, vertical: true });
}
Response.write("
");
}
%>
<%
}
}
// to group fields within an edit page
var __blockactive__ = false;
function BLOCK_START(id, title, params) {
params = params || {};
if (__blockactive__) ERROR_NESTED_BLOCK_START_DETECTED;
__blockactive__ = true;
%>
>
<%=title%>
<%
if (params.buttons && params.buttons.length)
{
%>
<%
}
function BLOCK_END() {
if (!__blockactive__) ERROR_BLOCK_END_WITHOUT_BLOCKSTART;
__blockactive__ = false;
%>
<%
}
/* optional params: { title: "Titel",
initHeight: "400px", // grove instelling
initHide : true,
refreshOnClose: true, // zet oorspronkelijk src terug na FcltClose van child
FcltClose: function aan te roepen na FcltClose van child
}
*/
function IFRAMER(id, url, params)
{
params = params||{};
%>
<%
if (params.buttons)
CreateButtons(params.buttons)
if (params.initHide) url+="&collapsed=1";
%>
<%
}
function IFRAMER_HEADER(titel, buttons, params)
{
var iscoll = getQParamInt("collapsed",0)==1;
%>
>
<%=titel %> <%
if (buttons) {
%>
<%
CreateButtons(buttons, { showIcons: true })
%>
<%
}
%>
<%
}
// Bij leeg label krijg je helemaal geen
's
function AFIELD(pclass, plabel, phref, pvalue, params)
{
params = params||{};
if ((pvalue == null || pvalue == "") && params.suppressEmpty)
return; // snel klaar
if (plabel) {
%>
<%
}
// params.html wordt er ook tussen geplakt (onclick bijvoorbeeld)
function RWFIELD(pname, pclass, plabel, pvalue, params)
{
pvalue = safe.nvl(pvalue);
params = params||{};
if (plabel) {
%>
<% }
if (params.fronttext) {
%><%=params.fronttext%>
<% }
var lclass = pclass;
if (params.infoPointer) lclass += " details";
if (params.extraclass) lclass += " " + params.extraclass;
if (!params.readonly && params.required) lclass += " required";
if (!params.readonly && params.requiredor0) lclass += " required required0isoke";
var inputtype = (isBadInput()? " type='text'" : " type='number'");
var lstep="";
switch (params.datatype) {
case "number" : lclass += " number"; break;
case "float" : lclass += " float"; break;
case "currency" : lclass += " currency"; lstep= " step='0.01'"; break;
case "text" : inputtype = " type='text'"; break;
case "button" : inputtype = " type='button'"; break;
default : inputtype = ""; break;
}
%>
<%=lstep%> name="<%=pname%>" id="<%=pname%>" value="<%=Server.HTMLEncode(pvalue)%>"
<%=(params.maxlength? " maxlength="+params.maxlength : "")%>
<%=(params.readonly? " readonly " : "")%>
<%=(params.html? " " + params.html + " " : "")%>
<%
if (params.infoPointer)
{ // Hebben we anno 2015.1 nog wel ergens een RWFIELD met infopointer?
%> onclick="FcltMgr.openDetail('<%=safe.jsstring(params.infoPointer.Url)%>', { reuse: true, titel: '<%=safe.jsstring(params.infoPointer.Title||"")%>' })"<%
}
%>><%
if (params.selector) {
FCLTselector(params.selector.fieldName, params.selector.sql, params.selector.params);
}
if (params.extrabutton) {
%>
<%
}
if (params.reartext) {
%><%=params.reartext%>
<%}
if (plabel) { %>
<%
}
}
// Sommige browsers ondersteunen het input type='number' en dan gaat het fout als wij
// er iets met een komma instoppen.
function isBadInput()
{
var agent = "" + Request.ServerVariables("HTTP_USER_AGENT");
if (agent.indexOf("Chrome")>=0)
return true;
if (agent.indexOf("Firefox")>=0)
return true;
if (agent.indexOf("Safari")>=0)
return true;
return false;
}
function RWFIELDTR(pname, pclass, plabel, pvalue, params)
{
params = params||{};
if ((pvalue == null || pvalue == "") && params.suppressEmpty && params.readonly)
return; // snel klaar
%>
<%=params.trclass?"class='"+params.trclass+"'":""%>>
<% if (!plabel) { %>