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.
282 lines
9.3 KiB
282 lines
9.3 KiB
<?php
|
|
global $thisstaff;
|
|
|
|
$parent_id = $_REQUEST['parent_id'] ?: $search->parent_id;
|
|
if ($parent_id
|
|
&& is_numeric($parent_id)
|
|
&& (!($parent = SavedQueue::lookup($parent_id)))
|
|
) {
|
|
$parent_id = 0;
|
|
}
|
|
|
|
$editable = $search->checkOwnership($thisstaff);
|
|
$queues = array();
|
|
foreach (CustomQueue::queues() as $q)
|
|
$queues[$q->id] = $q->getFullName();
|
|
asort($queues);
|
|
$queues = array(0 => ('—'.__("My Searches").'—')) + $queues;
|
|
$queue = $search;
|
|
$qname = $search->getName() ?: __('Advanced Ticket Search');
|
|
?>
|
|
<div id="advanced-search" class="advanced-search">
|
|
<h3 class="drag-handle"><?php echo Format::htmlchars($qname); ?></h3>
|
|
<a class="close" href=""><i class="icon-remove-circle"></i></a>
|
|
<hr/>
|
|
<?php
|
|
$info['error'] = $info['error'] ?: $errors['err'];
|
|
if ($info['error']) {
|
|
echo sprintf('<p id="msg_error">%s</p>', $info['error']);
|
|
} elseif ($info['warn']) {
|
|
echo sprintf('<p id="msg_warning">%s</p>', $info['warn']);
|
|
} elseif ($info['msg']) {
|
|
echo sprintf('<p id="msg_notice">%s</p>', $info['msg']);
|
|
}
|
|
|
|
// Form action
|
|
$action = '#tickets/search';
|
|
if ($search->isSaved() && $search->getId())
|
|
$action .= sprintf('/%s/save', $search->getId());
|
|
elseif (!$search instanceof AdhocSearch)
|
|
$action .= '/save';
|
|
?>
|
|
<form action="<?php echo $action; ?>" method="post" name="search" id="advsearch"
|
|
class="<?php echo ($search->isSaved() || $parent) ? 'savedsearch' : 'adhocsearch'; ?>">
|
|
<input type="hidden" name="id" value="<?php echo $search->getId(); ?>">
|
|
<?php
|
|
if ($editable) {
|
|
?>
|
|
<div class="flex row">
|
|
<div class="span12">
|
|
<select id="parent" name="parent_id" >
|
|
<?php
|
|
foreach ($queues as $id => $name) {
|
|
?>
|
|
<option value="<?php echo $id; ?>"
|
|
<?php if ($parent_id == $id) echo 'selected="selected"'; ?>
|
|
><?php echo $name; ?></option>
|
|
<?php } ?>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} ?>
|
|
<ul class="clean tabs">
|
|
<li class="active"><a href="#criteria"><i class="icon-search"></i> <?php echo __('Criteria'); ?></a></li>
|
|
<li><a href="#columns"><i class="icon-columns"></i> <?php echo __('Columns'); ?></a></li>
|
|
<?php
|
|
if ($search->isSaved()) { ?>
|
|
<li><a href="#settings"><i class="icon-cog"></i> <?php echo __('Settings'); ?></a></li>
|
|
<?php
|
|
} ?>
|
|
</ul>
|
|
|
|
<div class="tab_content" id="criteria">
|
|
<div class="flex row">
|
|
<div class="span12" style="overflow-y: auto; height:auto;">
|
|
<div class="error"><?php echo Format::htmlchars($errors['criteria']); ?></div>
|
|
<div class="faded <?php echo $parent ? ' ': 'hidden'; ?>"
|
|
id="inherited-parent" style="margin-bottom: 1em">
|
|
|
|
<div>
|
|
<strong><a href="#" id="parent-info"><i class="icon-caret-right"></i> <?php
|
|
echo sprintf('%s (<span id="parent-name">%s</span>)',
|
|
__('Inherited Criteria'),
|
|
$parent ? $parent->getName() : '');
|
|
?></a></strong>
|
|
</div>
|
|
<div id="parent-criteria" class="hidden">
|
|
<?php echo $parent ? nl2br(Format::htmlchars($parent->describeCriteria())) : ''; ?>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" name="a" value="search">
|
|
<?php
|
|
include STAFFINC_DIR . 'templates/advanced-search-criteria.tmpl.php';
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="tab_content hidden" id="columns">
|
|
<?php
|
|
include STAFFINC_DIR . "templates/queue-columns.tmpl.php";
|
|
?>
|
|
</div>
|
|
<?php
|
|
if ($search->isSaved()) { ?>
|
|
<div class="tab_content hidden" id="settings">
|
|
<?php
|
|
include STAFFINC_DIR . "templates/savedqueue-settings.tmpl.php";
|
|
?>
|
|
</div>
|
|
<?php
|
|
} else { // Not saved.
|
|
$save = (($parent && !$search->isSaved()) || isset($_POST['queue-name']));
|
|
?>
|
|
<div>
|
|
<div style="margin-top:10px;"><a href="#"
|
|
id="save"><i class="icon-caret-<?php echo $save ? 'down' : 'right';
|
|
?>"></i> <span><?php echo __('Save Search'); ?></span></a></div>
|
|
<div id="save-changes" class="<?php echo $save ? '' : 'hidden'; ?>" style="padding:5px; border-top: 1px dotted #777;">
|
|
<?php if ($parent_id) { ?>
|
|
<input type="hidden" name="parent_id" value="<?php echo $parent_id; ?>">
|
|
<?php } ?>
|
|
<div><input name="queue-name" type="text" size="40"
|
|
value="<?php echo Format::htmlchars($search->isSaved() ? $search->getName() :
|
|
$_POST['queue-name']); ?>"
|
|
placeholder="<?php echo __('Search Title'); ?>">
|
|
<?php
|
|
if ($search instanceof AdhocSearch && !$search->isSaved()) { ?>
|
|
<span class="buttons">
|
|
<button class="save button" type="button" name="save-search"
|
|
value="save"><i class="icon-save"></i> <?php echo $search->id
|
|
? __('Save Changes') : __('Save'); ?></button>
|
|
</span>
|
|
<?php
|
|
} ?>
|
|
</div>
|
|
<div class="error" id="name-error"><?php echo
|
|
Format::htmlchars($errors['queue-name']); ?></div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} ?>
|
|
<hr/>
|
|
<div>
|
|
<p class="full-width">
|
|
<span class="buttons pull-left">
|
|
<input type="button" name="cancel" class="close" value="<?php echo __('Cancel'); ?>">
|
|
<?php
|
|
if ($search->isSaved()) { ?>
|
|
<input type="button" name="done" class="done" value="<?php echo
|
|
__('Done'); ?>" >
|
|
<?php
|
|
} ?>
|
|
</span>
|
|
<span class="buttons pull-right">
|
|
<?php
|
|
if (!$search instanceof AdhocSearch) { ?>
|
|
<button class="save button" type="submit" name="save" value="save"
|
|
id="do_save"><i class="icon-save"></i>
|
|
<?php echo __('Save'); ?></button>
|
|
<?php
|
|
} else { ?>
|
|
<button class="button" type="submit" name="submit" value="search"
|
|
id="do_search"><i class="icon-search"></i>
|
|
<?php echo __('Search'); ?></button>
|
|
<?php
|
|
} ?>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</form>
|
|
|
|
<script>
|
|
+function() {
|
|
// Return a helper with preserved width of cells
|
|
var fixHelper = function(e, ui) {
|
|
ui.children().each(function() {
|
|
$(this).width($(this).width());
|
|
});
|
|
return ui;
|
|
};
|
|
// Sortable tables for dynamic forms objects
|
|
$('.sortable-rows').sortable({
|
|
'helper': fixHelper,
|
|
'cursor': 'move',
|
|
'stop': function(e, ui) {
|
|
var attr = ui.item.parent('tbody').data('sort'),
|
|
offset = parseInt($('#sort-offset').val(), 10) || 0;
|
|
warnOnLeave(ui.item);
|
|
$('input[name^='+attr+']', ui.item.parent('tbody')).each(function(i, el) {
|
|
$(el).val(i + 1 + offset);
|
|
});
|
|
}
|
|
});
|
|
|
|
$('a#parent-info').click(function() {
|
|
var $this = $(this);
|
|
$('#parent-criteria').slideToggle('fast', function(){
|
|
if ($(this).is(":hidden"))
|
|
$this.find('i').removeClass('icon-caret-down').addClass('icon-caret-right');
|
|
else
|
|
$this.find('i').removeClass('icon-caret-right').addClass('icon-caret-down');
|
|
});
|
|
return false;
|
|
});
|
|
|
|
$('form select#parent').change(function() {
|
|
var form = $(this).closest('form');
|
|
var qid = parseInt($(this).val(), 10) || 0;
|
|
|
|
if (qid > 0) {
|
|
$.ajax({
|
|
type: "GET",
|
|
url: 'ajax.php/queue/'+qid,
|
|
dataType: 'json',
|
|
success: function(queue) {
|
|
$('#parent-name', form).html(queue.name);
|
|
$('#parent-criteria', form).html(queue.criteria);
|
|
$('#inherited-parent', form).fadeIn();
|
|
}
|
|
})
|
|
.done(function() { })
|
|
.fail(function() { });
|
|
} else {
|
|
$('#inherited-parent', form).fadeOut();
|
|
}
|
|
});
|
|
|
|
$('a#save').click(function() {
|
|
var $this = $(this);
|
|
$('#save-changes').slideToggle('fast', function(){
|
|
if ($(this).is(":hidden"))
|
|
$this.find('i').removeClass('icon-caret-down').addClass('icon-caret-right');
|
|
else
|
|
$this.find('i').removeClass('icon-caret-right').addClass('icon-caret-down');
|
|
});
|
|
return false;
|
|
});
|
|
|
|
$('form#advsearch').on('keyup change paste', 'input, select, textarea', function() {
|
|
|
|
var form = $(this).closest('form');
|
|
$this = $('#save-changes', form);
|
|
$('button.save', form).addClass('save pending');
|
|
$('div.error, div.error-banner', form).html('').hide();
|
|
});
|
|
|
|
$(document).on('click', 'form#advsearch input#reset', function(e) {
|
|
var f = $(this).closest('form');
|
|
$('button.save', f).removeClass('save pending');
|
|
$('div#save-changes', f).hide();
|
|
});
|
|
|
|
$('button[name=save-search]').click(function() {
|
|
var $form = $(this).closest('form');
|
|
var id = parseInt($('input[name=id]', $form).val(), 10) || 0;
|
|
var name = $('input[name=queue-name]', $form).val();
|
|
if (name.length) {
|
|
var action = '#tickets/search';
|
|
if (id > 0)
|
|
action = action + '/'+id;
|
|
$form.prop('action', action+'/save');
|
|
$form.submit();
|
|
} else {
|
|
$('div#name-error', $form).html('<?php echo __('Name required');
|
|
?>').show();
|
|
}
|
|
|
|
return false;
|
|
});
|
|
|
|
$('input.done').click(function() {
|
|
var $form = $(this).closest('form');
|
|
var id = parseInt($('input[name=id]', $form).val(), 10) || 0;
|
|
if ($('button.save', $form).hasClass('pending'))
|
|
alert('Unsaved Changes - save or cancel to discard!');
|
|
else
|
|
window.location.href = 'tickets.php?queue='+id;
|
|
});
|
|
}();
|
|
</script>
|