Refactor record detailed view controller

Fix typo

Fix Typo
This commit is contained in:
Nicolas Le Goff
2012-10-25 16:27:30 +02:00
parent f0a7ccc7d4
commit 11b521de8b
4 changed files with 114 additions and 68 deletions

View File

@@ -283,7 +283,7 @@ class Query implements ControllerProviderInterface
$app->abort(400, 'Provided search engine options are not valid');
}
$pos = (int) $request->request->get('pos', 1);
$pos = (int) $request->request->get('pos', 0);
$query = $request->request->get('query', '');
$record = new \record_preview($app, 'RESULT', $pos, '', '', $searchEngine, $query);

View File

@@ -31,6 +31,23 @@ class Records implements ControllerProviderInterface
$app['firewall']->requireNotGuest();
});
/**
* Get the record detailed view
*
* name : record_details
*
* description : Get the detailed view for a specific record
*
* method : POST|GET
*
* parameters : none
*
* return : JSON Response
*/
$controllers->match('/', $this->call('getRecord'))
->bind('record_details')
->method('GET|POST');
/**
* Delete a record or a list of records
*
@@ -82,12 +99,104 @@ class Records implements ControllerProviderInterface
return $controllers;
}
/**
* Get record detailed view
*
* @param Application $app
* @param Request $request
* @param integer $sbas_id
* @param integer $record_id
* @return JsonResponse
*/
public function getRecord(Application $app, Request $request)
{
if(!$request->isXmlHttpRequest()){
$app->abort(400);
}
$searchEngine = null;
$train = '';
// Use $request->get as HTTP method can be POST or GET
if ('RESULT' == $env = strtoupper($request->get('env', ''))) {
if (null === $optionsSerial = $request->get('options_serial')) {
$app->abort(400, 'Search engine options are missing');
}
if (false !== $options = unserialize($optionsSerial)) {
$searchEngine = new \searchEngine_adapter($app);
$searchEngine->set_options($options);
} else {
$app->abort(400, 'Provided search engine options are not valid');
}
}
$pos = (int) $request->get('pos', 0);
$query = $request->get('query', '');
$reloadTrain = !! $request->get('roll', false);
$record = new \record_preview(
$app,
$env,
$pos < 0 ? 0 : $pos,
$request->get('cont', ''),
$reloadTrain,
$searchEngine,
$query
);
if ($record->is_from_reg()) {
$train = $app['twig']->render('prod/preview/reg_train.html.twig',
array('record' => $record)
);
}
if ($record->is_from_basket() && $reloadTrain) {
$train = $app['twig']->render('prod/preview/basket_train.html.twig',
array('record' => $record)
);
}
if ($record->is_from_feed()) {
$train = $app['twig']->render('prod/preview/feed_train.html.twig',
array('record' => $record)
);
}
return $app->json(array(
"desc" => $app['twig']->render('prod/preview/caption.html.twig', array(
'record' => $record,
'highlight' => $query,
'searchEngine' => $searchEngine
)),
"html_preview" => $app['twig']->render('common/preview.html.twig', array(
'record' => $record
)),
"others" => $app['twig']->render('prod/preview/appears_in.html.twig', array(
'parents' => $record->get_grouping_parents(),
'baskets' => $record->get_container_baskets($app['EM'], $app['phraseanet.user'])
)),
"current" => $train,
"history" => $app['twig']->render('prod/preview/short_history.html.twig', array(
'record' => $record
)),
"popularity" => $app['twig']->render('prod/preview/popularity.html.twig', array(
'record' => $record
)),
"tools" => $app['twig']->render('prod/preview/tools.html.twig', array(
'record' => $record
)),
"pos" => $record->get_number(),
"title" => $record->get_title($query, $searchEngine)
));
}
/**
* Delete a record or a list of records
*
* @param Application $app
* @param Request $request
* @return HtmlResponse
* @return JsonResponse
*/
public function doDeleteRecords(Application $app, Request $request)
{

View File

@@ -31,68 +31,6 @@ $parm = $request->get_parms('action', 'env', 'pos', 'cont', 'roll', 'mode', 'col
switch ($parm['action']) {
case 'LANGUAGE':
$output = module_client::getLanguage($app, $lng);
break;
case 'PREVIEW':
$search_engine = null;
if ($parm['env'] == 'RESULT' && ($options = unserialize($parm['options_serial'])) !== false) {
$search_engine = new searchEngine_adapter($app);
$search_engine->set_options($options);
}
$record = new record_preview($app, $parm['env'], $parm['pos'], $parm['cont'], $parm['roll'], $search_engine, $parm['query']);
$train = '';
if ($record->is_from_reg()) {
$train = $app['twig']->render('prod/preview/reg_train.html.twig', array(
'record' => $record
)
);
}
if ($record->is_from_basket() && $parm['roll']) {
$train = $app['twig']->render('prod/preview/basket_train.html.twig', array(
'record' => $record
)
);
}
if ($record->is_from_feed()) {
$train = $app['twig']->render('prod/preview/feed_train.html.twig', array(
'record' => $record
)
);
}
$output = p4string::jsonencode(
array(
"desc" => $app['twig']->render('prod/preview/caption.html.twig', array(
'record' => $record
, 'highlight' => $parm['query']
, 'searchEngine' => $search_engine
)
)
, "html_preview" => $app['twig']->render('common/preview.html.twig', array('record' => $record)
)
, "others" => $app['twig']->render('prod/preview/appears_in.html.twig', array(
'parents' => $record->get_grouping_parents(),
'baskets' => $record->get_container_baskets($app['EM'], $app['phraseanet.user'])
)
)
, "current" => $train
, "history" => $app['twig']->render('prod/preview/short_history.html.twig', array('record' => $record)
)
, "popularity" => $app['twig']->render('prod/preview/popularity.html.twig', array('record' => $record)
)
, "tools" => $app['twig']->render('prod/preview/tools.html.twig', array('record' => $record)
)
, "pos" => $record->get_number()
, "title" => $record->get_title($parm['query'], $search_engine)
)
);
break;
case 'HOME':
$output = phrasea::getHome($app, 'PUBLI', 'client');

View File

@@ -78,16 +78,15 @@ function openPreview(env, pos, contId, reload){
prevAjax = $.ajax({
type: "POST",
url: "/client/clientFeedBack.php",
url: "/prod/records/",
dataType: 'json',
data: {
action: "PREVIEW",
env: env,
pos: pos,
cont: contId,
roll: roll,
options_serial:options_serial,
query:query
options_serial:options_serial,
query:query
},
beforeSend: function(){
if (prevAjaxrunning)