You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.4 KiB
129 lines
4.4 KiB
<?php
|
|
// Display errors if any
|
|
foreach ($form->errors(true) ?: array() as $message)
|
|
echo sprintf('<div class="error-banner">%s</div>',
|
|
Format::htmlchars($message));
|
|
// Current search fields.
|
|
$info = $search->getSearchFields($form) ?: array();
|
|
if (($search instanceof SavedQueue) && !$search->checkOwnership($thisstaff)) {
|
|
$matches = $search->getSupplementalMatches();
|
|
// Uneditable core criteria for the queue
|
|
echo '<div class="faded">'. nl2br(Format::htmlchars($search->describeCriteria())).
|
|
'</div><br>';
|
|
// Show any supplemental filters
|
|
if ($matches) {
|
|
?>
|
|
<div id="ticket-flags"
|
|
style="padding:5px; border-top: 1px dotted #777;">
|
|
<strong><i class="icon-caret-down"></i> <?php
|
|
echo __('Supplemental Filters'); ?></strong>
|
|
</div>
|
|
<?php
|
|
}
|
|
} else {
|
|
$matches = $search->getSupportedMatches();
|
|
}
|
|
|
|
foreach (array_keys($info) as $F) {
|
|
?><input type="hidden" name="fields[]" value="<?php echo $F; ?>"/><?php
|
|
}
|
|
$has_errors = !!$form->errors();
|
|
$inbody = false;
|
|
$already_listed = [];
|
|
$first_field = true;
|
|
foreach ($form->getFields() as $name=>$field) {
|
|
@list($name, $sub) = explode('+', $field->get('name'), 2);
|
|
$already_listed[$name] = 1;
|
|
if ($sub === 'search') {
|
|
if (!$first_field) {
|
|
echo '</div></div>';
|
|
}
|
|
echo '<div class="adv-search-field-container">';
|
|
$inbody = false;
|
|
$first_field = false;
|
|
}
|
|
elseif (!$first_field && !$inbody) {
|
|
echo sprintf('<div class="adv-search-field-body %s">',
|
|
!$has_errors && isset($info[$name]) && $info[$name]['active'] ? 'hidden' : '');
|
|
$inbody = true;
|
|
}
|
|
?>
|
|
<fieldset id="field<?php echo $field->getWidget()->id; ?>" <?php
|
|
$class = array();
|
|
if (!$field->isVisible())
|
|
$class[] = "hidden";
|
|
if ($sub === 'method')
|
|
$class[] = "adv-search-method";
|
|
elseif ($sub === 'search')
|
|
$class[] = "adv-search-field";
|
|
elseif ($field->get('__searchval__'))
|
|
$class[] = "adv-search-val";
|
|
if ($class)
|
|
echo 'class="'.implode(' ', $class).'"';
|
|
?>>
|
|
<?php echo $field->render(); ?>
|
|
<?php if (!$has_errors && $sub === 'search' && isset($info[$name]) && $info[$name]['active']) { ?>
|
|
<span style="padding-left: 5px">
|
|
<a href="#" data-name="<?php echo Format::htmlchars($name); ?>" onclick="javascript:
|
|
var $this = $(this),
|
|
name = $this.data('name'),
|
|
expanded = $this.data('expanded') || false;
|
|
$this.closest('.adv-search-field-container').find('.adv-search-field-body').slideDown('fast');
|
|
$this.find('span.faded').hide();
|
|
$this.find('i').removeClass('icon-caret-right').addClass('icon-caret-down');
|
|
return false; "><i class="icon-caret-right"></i>
|
|
<span class="faded"><?php echo $search->describeField($info[$name]); ?></span>
|
|
</a>
|
|
</span>
|
|
<?php } ?>
|
|
<?php foreach ($field->errors() as $E) {
|
|
?><div class="error"><?php echo $E; ?></div><?php
|
|
} ?>
|
|
</fieldset>
|
|
<?php if ($name[0] == ':' && substr($name, -7) == '+search') {
|
|
list($N,) = explode('+', $name, 2); ?>
|
|
<input type="hidden" name="fields[]" value="<?php echo $N; ?>"/>
|
|
<?php }
|
|
}
|
|
if (!$first_field)
|
|
echo '</div></div>';
|
|
|
|
if ($matches && is_array($matches)) { ?>
|
|
<div id="extra-fields"></div>
|
|
<hr/>
|
|
<i class="icon-plus-sign"></i>
|
|
<select id="search-add-new-field" name="new-field" style="max-width: 300px;">
|
|
<option value="">— <?php echo __('Add Other Field'); ?> —</option>
|
|
<?php
|
|
foreach ($matches as $path => $F) {
|
|
# Skip fields already listed above the drop-down
|
|
if (isset($already_listed[$path]))
|
|
continue;
|
|
list($label, $field) = $F; ?>
|
|
<option value="<?php echo $path; ?>" <?php
|
|
if (isset($state[$path])) echo 'disabled="disabled"';
|
|
?>><?php echo $label; ?></option>
|
|
<?php }
|
|
?>
|
|
</select>
|
|
<script>
|
|
$(function() {
|
|
$('#search-add-new-field').on('change', function() {
|
|
var that=this;
|
|
$.ajax({
|
|
url: 'ajax.php/tickets/search/field/'+$(this).val(),
|
|
type: 'get',
|
|
dataType: 'json',
|
|
success: function(json) {
|
|
if (!json.success)
|
|
return false;
|
|
$(that).find(':selected').prop('disabled', true);
|
|
$(that).find('option:eq("")').prop('selected', true);
|
|
$('#extra-fields').append($(json.html));
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
} ?>
|