📄 adv_query_builder.smarty.svn-base
字号:
case 'USERLIST': html = createUserList(groupid, fid); break; case 'DATE': html = createDate(groupid, fid); return {html: html, init: initDate}; case 'INT': html = createInt(groupid, fid); return {html: html, init: initInt}; case 'FLOAT': html = createFloat(groupid, fid); return {html: html, init: initFloat}; case 'DATEDIFF': html = createDateDiff(groupid, fid); return {html: html, init: initDateDiff}; default: html += 'unknown: ' + type; } return {html: html, init: callback};}function removeCriteriaGroup(groupid){ $("groupwrapper" + groupid).innerHTML = ''; criteria[groupid].fields = 0;}function initAddField(groupid){ if (criteria[groupid].visible == 0) { $('criteria_nofields' + groupid).style.display = 'none'; if (groupid > 0) { $('removeCriteriaGroup' + groupid).style.display = 'block'; } } var fid = ++criteria[groupid].fields; criteria[groupid].visible++; return fid;}function addMetadataField(groupid){ var fid = initAddField(groupid); var fieldsetid=$('fieldsets' + groupid).selectedIndex-1; var fieldid=$('fieldset_fields' + groupid).selectedIndex; var fieldsetname = meta_fieldsets[fieldsetid].name; var fieldname = meta_fieldsets[fieldsetid].fields[fieldid].name; var fieldtype = meta_fieldsets[fieldsetid].fields[fieldid].datatype; var fieldoptions = meta_fieldsets[fieldsetid].fields[fieldid].options; var html = "<table width=\"650\">"; html += "<tr>"; html += "<td width=\"120\" valign=top><nobr><B>" + fieldsetname + ':</B></nobr><br><nobr><i>' + fieldname + '</i></nobr>'; html += "<div id=\"field" + groupid + "_" + fid + "expr\" style=\"display: none\">[\"" + fieldsetname + "\"][\""+fieldname + "\"]</div>"; html += "<td><nobr>"; var rec = addFieldTypeSelection(groupid, fid, fieldtype, fieldoptions); html += rec.html; html += "<td width=\"55\">"; html += "<input type=\"button\" value=\"{/literal}{i18n}remove{/i18n}{literal}\" onclick=\"delField(" + groupid + "," + fid + ")\">"; html += "</table>"; var el = new Ext.Element(document.createElement('div')); el.dom.id = "field" + groupid + "_" + fid; el.id = el.dom.id; el.dom.innerHTML = html; el.appendTo('criteria_fields' + groupid); if (rec.init != null) { rec.init(groupid, fid); } return fid;}function addWorkflowStateField(groupid){ var wid=$('workflows' + groupid).selectedIndex-1; var sid=$('workflow_states' + groupid).selectedIndex; var workflowname = meta_workflows[wid].name; var statename = meta_workflows[wid].states[sid].name; var fid = addField(groupid, 'Workflow', 'Workflow', 'STRINGMATCH'); $('field' + groupid + '_' + fid + 'start').value = workflowname; fid = addField(groupid, 'Workflow State', 'WorkflowState', 'STRINGMATCH'); $('field' + groupid + '_' + fid + 'start').value = statename; $('groupop' + groupid).selectedIndex = 0;}function addField(groupid, display, exprname, type){ var fid = initAddField(groupid); var rec = {init:null}; var html = "<table width=\"650\">"; html += "<tr>"; html += "<td width=\"120\" valign=top>" + display; html += "<div id=\"field" + groupid + "_" + fid + "expr\" style=\"display: none\">" + exprname + "</div>"; html += "<td valign=top><nobr>"; rec = addFieldTypeSelection(groupid, fid, type, null); html += rec.html; html += "<td width=\"55\" valign=top>"; html += "<input type=\"button\" value=\"{/literal}{i18n}remove{/i18n}{literal}\" onclick=\"delField(" + groupid + "," + fid + ")\">"; html += "</table>"; var el = new Ext.Element(document.createElement('div')); el.dom.id = "field" + groupid + "_" + fid; el.id = el.dom.id; el.dom.innerHTML = html; el.appendTo('criteria_fields' + groupid); var el = $('field' + groupid + '_' + fid + 'start'); if (el != null) { var map = new Ext.KeyMap(el, { stopEvent: true, key: Ext.EventObject.ENTER, fn: function() { butSearchClick(); } }); } var el = $('field' + groupid + '_' + fid + 'end'); if (el != null) { var map = new Ext.KeyMap(el, { stopEvent: true, key: Ext.EventObject.ENTER, fn: function() { butSearchClick(); } }); } if (rec.init != null) { rec.init(groupid, fid); } return fid;}function fieldsetsChange(groupid){ var fieldsets = $('fieldsets' + groupid); var fsid = fieldsets.selectedIndex -1; if (fsid < 0) { $('fieldset_fields_wrapper' + groupid).style.display = 'none'; return; } $('fieldset_fields_wrapper' + groupid).style.display = 'block'; $('fieldset_name' + groupid).innerHTML = '<nobr><B>' + meta_fieldsets[fsid].name + ' Fields:</b></nobr>'; var fslist = $('fieldset_fields' + groupid); for(i=fslist.options.length-1;i>=0;i--) { fslist.remove(i); } var fields = meta_fieldsets[fsid].fields; for (i=0;i<fields.length;i++) { var opt = new Option(fields[i].name, fields[i].id); fslist.options[fslist.options.length] = opt; }}function workflowsChange(groupid){ var workflows = $('workflows' + groupid); var wid = workflows.selectedIndex -1; if (wid < 0) { $('workflow_states_wrapper' + groupid).style.display = 'none'; return; } $('workflow_states_wrapper' + groupid).style.display = 'block'; $('workflow_name' + groupid).innerHTML = '<nobr><B>' +meta_workflows[wid].name + ' States:</b></nobr>'; var wlist = $('workflow_states' + groupid); for(i=wlist.options.length-1;i>=0;i--) { wlist.remove(i); } var states = meta_workflows[wid].states; for (i=0;i<states.length;i++) { var opt = new Option(states[i].name, states[i].id); wlist.options[wlist.options.length] = opt; }}function addCriteriaSet(){ cs = criteria.length; criteria[cs] = {fields:0, visible:0}; var wrapping = $('groupwrapping'); var wrapperTemplate = $('groupwrapper0'); var content = wrapperTemplate.innerHTML; var words = ['groupwrapper0','groupop0','criteria0','criteria_nofields0','criteria_fields0','fieldsets0','selector0','workflows0', 'fieldset_fields_wrapper0','fieldset_name0','fieldset_fields0','workflow_states_wrapper0','workflow_name0','workflow_states0', 'selectorChange(0)','fieldChange(0)','fieldsetsChange(0)','workflowsChange(0)', 'fields0', 'form0', 'addMetadataField(0)', 'addWorkflowStateField(0)', 'removeCriteriaGroup0', 'removeCriteriaGroup(0)']; for(i=0;i<words.length;i++) { var oldword = words[i]; var newword = oldword.replace('0', cs); content = content.replace(oldword, newword); } var el = new Ext.Element(document.createElement('div')); el.dom.id = "groupwrapper" + cs; el.id = el.dom.id; el.dom.innerHTML = content; el.appendTo(wrapping); $('selector' + cs).selectedIndex = 0; $('groupop' + cs).selectedIndex = 1; $('criteria_fields' + cs).innerHTML = ''; $('criteria_nofields' + cs).style.display = 'block'; $('removeCriteriaGroup' + cs).style.display = 'block'; selectorChange(cs);}function buildExpression(){ mainOp = $('allop').value; var main_str = ''; var gv = 0; for(var gid=0;gid<criteria.length;gid++) { if (criteria[gid].fields == 0) { continue; } criteriaOp = $('groupop' + gid).value; var set_str = ''; var fv =0; for(fid=1;fid<=criteria[gid].fields;fid++) { if ($('field' + gid + '_' + fid).innerHTML == '') { continue; } if (fv++ > 0) set_str += ' ' + criteriaOp + ' '; var fieldname = $('field' + gid + '_' + fid + 'expr').innerHTML; var fieldop = $('field' + gid + '_' + fid + 'op').value; var start = getElByName(gid, 'field' + gid + '_' + fid + 'start'); var end = getElByName(gid, 'field' + gid + '_' + fid + 'end'); var expr = expr = fieldname + ' ' + fieldop + ' "' + start.value.replace(/\"/g, "'") + '"'; switch (fieldop) { case 'between': case 'BETWEEN': expr += ' AND "' + end.value.replace(/\"/g, "'") + '"'; break; default: break; } set_str += expr; } if (set_str != '') { set_str = '(' + set_str + ')'; if (gv++ > 0) main_str += ' ' + mainOp + ' '; main_str += set_str; } } return main_str;}function butSearchClick(){ var expr = buildExpression(); if (expr == '') { alert('{/literal}{i18n}Please select some search criteria{/i18n}{literal}'); return; } var txtQuery = document.getElementById('txtQuery'); txtQuery.value=expr; var frm = document.getElementById('frmQuickSearch'); frm.submit();}</script>{/literal}<fieldset> <legend>{i18n}Advanced Search{/i18n}</legend>{capture assign=options}<a href="{$rootUrl}/search2.php?action=queryBuilder">{i18n}Search Criteria Editor{/i18n}</a>{/capture}{i18n arg_options=$options}The #options# may also be used to create more complex search criteria expressions.{/i18n}<br><br>{capture assign=options}<select id="allop"><option value="AND">{i18n}all{/i18n}<option value="OR" SELECTED>{i18n}any{/i18n}</select>{/capture}{i18n arg_options=$options}Return items which match #options# of the criteria groups specified.{/i18n}<div id="groupwrapping"><div id="groupwrapper0"> <fieldset> <legend>{i18n}Criteria Group{/i18n}</legend> {capture assign=options} <select id="groupop0"> <option value="AND">{i18n}all{/i18n} <option value="OR" SELECTED>{i18n}any{/i18n} </select> {/capture} {i18n arg_options=$options}Return items which match #options# of the criteria specified below.{/i18n} <br> <div id="criteria0"> <form id="form0" onsubmit="return false;"> <table width="100%"> <tr> <td width="50%" valign="top"> <br> <div id="criteria_nofields0" style="color: brown">{i18n}No criteria have been selected for the criteria group.{/i18n} <p> <input type=button value="{i18n}Remove Criteria Group{/i18n}" onclick="removeCriteriaGroup(0)" id="removeCriteriaGroup0" style="display: none"> </div> <div id="criteria_fields0"> </div> </td> <td valign="top"> <table > <tr> <td valign=top> <select id="selector0" style="width: 200px" onchange="selectorChange(0)"> <option value="0">{i18n}Available Criteria{/i18n} <option value="1">{i18n}Available Fieldsets{/i18n} <option value="2">{i18n}Available Workflows{/i18n} </select> <br> <div> <select id="fields0" size="5" style="width: 200px; height: 100px; display: block" onclick="fieldChange(0)"> <option value="" selected>--- {i18n}Select some criteria{/i18n} --- {foreach from=$metainfo.fields item=field} <option>{$field.display} {/foreach} </select> <select id="fieldsets0" size="5" style="width: 200px; height: 100px; display: none" onclick="fieldsetsChange(0)"> <option value="" selected>--- {i18n}Select a fieldset{/i18n} --- {foreach from=$metainfo.fieldsets item=fieldset} <option>{$fieldset.name} {/foreach} </select> <select id="workflows0" size="5" style="width: 200px; height: 100px; display: none" onclick="workflowsChange(0)" > <option value="" selected>--- {i18n}Select a workflow{/i18n} --- {foreach from=$metainfo.workflows item=workflow} <option>{$workflow.name} {/foreach} </select> </div> <td valign=top> <div id="fieldset_fields_wrapper0" style="display: none""> <div id="fieldset_name0"></div> <select id="fieldset_fields0" size=5 style="width: 150px" onclick="addMetadataField(0)"> </select> </div> <div id="workflow_states_wrapper0" style="display: none"> <div id="workflow_name0"></div> <select id="workflow_states0" size=5 style="width: 150px" onclick="addWorkflowStateField(0)"> </select> </div> </td> <tr> <td colspan=5> {i18n}Click on a field above to add it to the criteria group.{/i18n} </td> </tr> </table> </td> </tr> </table> </form> </div> </fieldset></div></div><div id=""><input type=button value="{i18n}Add another set of criteria{/i18n}" onclick="addCriteriaSet()"><input type=button value="{i18n}Search{/i18n}" onclick="butSearchClick()"></div></fieldset></div>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -