mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-05-07 05:44:58 +02:00
related to #1465 Search action done in ajax, still need to construct response properly
This commit is contained in:
committed by
plegall
parent
0d62df8cce
commit
e96df2bcc6
+7
-2
@@ -161,7 +161,8 @@ history_tabsheet();
|
||||
$template->assign(
|
||||
array(
|
||||
'U_HELP' => get_root_url().'admin/popuphelp.php?page=history',
|
||||
'F_ACTION' => get_root_url().'admin.php?page=history'
|
||||
'F_ACTION' => get_root_url().'admin.php?page=history',
|
||||
'API_METHOD' => 'ws.php?format=json&method=pwg.history.search'
|
||||
)
|
||||
);
|
||||
|
||||
@@ -182,6 +183,7 @@ SELECT rules
|
||||
|
||||
$page['search'] = unserialize($serialized_rules);
|
||||
|
||||
// Used when filtering on a specific user from displayed lines
|
||||
if (isset($_GET['user_id']))
|
||||
{
|
||||
if (!is_numeric($_GET['user_id']))
|
||||
@@ -212,6 +214,7 @@ INSERT INTO '.SEARCH_TABLE.'
|
||||
|
||||
$page['nb_lines'] = count($data);
|
||||
|
||||
//Number of ids of each kind
|
||||
$history_lines = array();
|
||||
$user_ids = array();
|
||||
$username_of = array();
|
||||
@@ -435,7 +438,8 @@ SELECT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Put in ajax response
|
||||
$template->append(
|
||||
'search_results',
|
||||
array(
|
||||
@@ -480,6 +484,7 @@ SELECT
|
||||
$member_strings[] = $member_string;
|
||||
}
|
||||
|
||||
// Put in ajax response
|
||||
$template->assign(
|
||||
'search_summary',
|
||||
array(
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
$(document).ready(() => {
|
||||
|
||||
$(".filter").submit(function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var dataArray = $(this).serializeArray()
|
||||
console.log(dataArray);
|
||||
dataObj = {};
|
||||
|
||||
dataObj["types"] = [];
|
||||
$(dataArray).each(function(i, field){
|
||||
if (field.name == "types[]") {
|
||||
dataObj["types"].push(field.value);
|
||||
} else {
|
||||
dataObj[field.name] = field.value;
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: API_METHOD,
|
||||
method: "POST",
|
||||
data: {
|
||||
start: dataObj['start'],
|
||||
end: dataObj['end'],
|
||||
types: dataObj['types'],
|
||||
user: dataObj['user'],
|
||||
image_id: dataObj['image_id'],
|
||||
filename: dataObj['filename'],
|
||||
ip: dataObj['ip'],
|
||||
display_thumbnail: dataObj['display_thumbnail'],
|
||||
},
|
||||
success: function (data) {
|
||||
console.log(data);
|
||||
},
|
||||
error: function (e) {
|
||||
console.log("Something went wrong: " + e);
|
||||
}
|
||||
})
|
||||
|
||||
console.log(dataObj);
|
||||
})
|
||||
})
|
||||
@@ -5,11 +5,19 @@
|
||||
jQuery(function(){ {* <!-- onLoad needed to wait localization loads --> *}
|
||||
jQuery('[data-datepicker]').pwgDatepicker();
|
||||
});
|
||||
|
||||
const API_METHOD = "{$API_METHOD}";
|
||||
{/footer_script}
|
||||
|
||||
{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'}
|
||||
{combine_script id='history' load='footer' path='admin/themes/default/js/history.js'}
|
||||
|
||||
{combine_script id='jquery.confirm' load='footer' require='jquery' path='themes/default/js/plugins/jquery-confirm.min.js'}
|
||||
{combine_css path="admin/themes/default/fontello/css/animation.css" order=10} {* order 10 is required, see issue 1080 *}
|
||||
|
||||
<h2>{'History'|@translate} {$TABSHEET_TITLE}</h2>
|
||||
|
||||
<form class="filter" method="post" name="filter" action="{$F_ACTION}">
|
||||
<form class="filter" method="post" name="filter" action="">
|
||||
<fieldset class="with-border">
|
||||
<legend><span class="icon-filter icon-green"></span>{'Filter'|@translate}</legend>
|
||||
<ul>
|
||||
|
||||
@@ -578,4 +578,133 @@ SELECT
|
||||
);
|
||||
}
|
||||
|
||||
function ws_history_search($param, &$service)
|
||||
{
|
||||
|
||||
if (isset($_GET['start']) and is_numeric($_GET['start']))
|
||||
{
|
||||
$page['start'] = $_GET['start'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$page['start'] = 0;
|
||||
}
|
||||
|
||||
$types = array_merge(array('none'), get_enums(HISTORY_TABLE, 'image_type'));
|
||||
|
||||
$display_thumbnails = array('no_display_thumbnail' => l10n('No display'),
|
||||
'display_thumbnail_classic' => l10n('Classic display'),
|
||||
'display_thumbnail_hoverbox' => l10n('Hoverbox display')
|
||||
);
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | Build search criteria and redirect to results |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
$page['errors'] = array();
|
||||
$search = array();
|
||||
|
||||
// date start
|
||||
if (!empty($param['start']))
|
||||
{
|
||||
check_input_parameter('start', $param, false, '/^\d{4}-\d{2}-\d{2}$/');
|
||||
$search['fields']['date-after'] = $param['start'];
|
||||
}
|
||||
|
||||
// date end
|
||||
if (!empty($param['end']))
|
||||
{
|
||||
check_input_parameter('end', $param, false, '/^\d{4}-\d{2}-\d{2}$/');
|
||||
$search['fields']['date-before'] = $param['end'];
|
||||
}
|
||||
|
||||
// types
|
||||
if (empty($param['types']))
|
||||
{
|
||||
$search['fields']['types'] = $types;
|
||||
}
|
||||
else
|
||||
{
|
||||
check_input_parameter('types', $param, true, '/^('.implode('|', $types).')$/');
|
||||
$search['fields']['types'] = $param['types'];
|
||||
}
|
||||
|
||||
// user
|
||||
$search['fields']['user'] = intval($param['user']);
|
||||
|
||||
// image
|
||||
if (!empty($param['image_id']))
|
||||
{
|
||||
$search['fields']['image_id'] = intval($param['image_id']);
|
||||
}
|
||||
|
||||
// filename
|
||||
if (!empty($param['filename']))
|
||||
{
|
||||
$search['fields']['filename'] = str_replace(
|
||||
'*',
|
||||
'%',
|
||||
pwg_db_real_escape_string($param['filename'])
|
||||
);
|
||||
}
|
||||
|
||||
// ip
|
||||
if (!empty($param['ip']))
|
||||
{
|
||||
$search['fields']['ip'] = str_replace(
|
||||
'*',
|
||||
'%',
|
||||
pwg_db_real_escape_string($param['ip'])
|
||||
);
|
||||
}
|
||||
|
||||
// thumbnails
|
||||
check_input_parameter('display_thumbnail', $param, false, '/^('.implode('|', array_keys($display_thumbnails)).')$/');
|
||||
|
||||
$search['fields']['display_thumbnail'] = $param['display_thumbnail'];
|
||||
// Display choise are also save to one cookie
|
||||
if (!empty($param['display_thumbnail'])
|
||||
and isset($display_thumbnails[$param['display_thumbnail']]))
|
||||
{
|
||||
$cookie_val = $param['display_thumbnail'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$cookie_val = null;
|
||||
}
|
||||
|
||||
pwg_set_cookie_var('display_thumbnail', $cookie_val, strtotime('+1 month') );
|
||||
|
||||
// TODO manage inconsistency of having $_POST['image_id'] and
|
||||
// $_POST['filename'] simultaneously
|
||||
|
||||
// store seach in database
|
||||
if (!empty($search))
|
||||
{
|
||||
// register search rules in database, then they will be available on
|
||||
// thumbnails page and picture page.
|
||||
$query ='
|
||||
INSERT INTO '.SEARCH_TABLE.'
|
||||
(rules)
|
||||
VALUES
|
||||
(\''.pwg_db_real_escape_string(serialize($search)).'\')
|
||||
;';
|
||||
|
||||
pwg_query($query);
|
||||
|
||||
$search_id = pwg_db_insert_id(SEARCH_TABLE);
|
||||
|
||||
// Remove redirect for ajax //
|
||||
// redirect(
|
||||
// PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id
|
||||
// );
|
||||
}
|
||||
else
|
||||
{
|
||||
$page['errors'][] = l10n('Empty query. No criteria has been entered.');
|
||||
}
|
||||
|
||||
return $param;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1244,6 +1244,14 @@ enabled_high, registration_date, registration_date_string, registration_date_sin
|
||||
'Returns the favorite images of the current user.',
|
||||
$ws_functions_root . 'pwg.users.php'
|
||||
);
|
||||
|
||||
$service->addMethod(
|
||||
'pwg.history.search',
|
||||
'ws_history_search',
|
||||
null,
|
||||
'Gives an history of who has visited the galery and the actions done in it. Receives parameter.',
|
||||
$ws_functions_root . 'pwg.php'
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user