- restore task interfaces

- remove task "phraseanet-indexer"
todo :
task "recordmover"
This commit is contained in:
Jean-Yves Gaulier
2015-04-29 14:48:22 +02:00
parent 427439f87e
commit a0815afcd5
8 changed files with 112 additions and 226 deletions

View File

@@ -103,7 +103,7 @@ class BuildSubdefs extends Command
$sqlCount .= " AND (s.substit = 0)"; $sqlCount .= " AND (s.substit = 0)";
} }
} elseif ($substitutionOnly) { } elseif ($substitutionOnly) {
throw new InvalidArgumentException('Conflict, you can not ask for --substituion-only && --with-substitution parameters at the same time'); throw new InvalidArgumentException('Conflict, you can not ask for --substitution-only && --with-substitution parameters at the same time');
} }
list($sqlCount, $stmtParams) = SQLParserUtils::expandListParameters($sqlCount, $params, $types); list($sqlCount, $stmtParams) = SQLParserUtils::expandListParameters($sqlCount, $params, $types);

View File

@@ -82,7 +82,6 @@ class TasksServiceProvider implements ServiceProviderInterface
new SubdefsJob($app['dispatcher'], $logger, $app['translator']), new SubdefsJob($app['dispatcher'], $logger, $app['translator']),
new WriteMetadataJob($app['dispatcher'], $logger, $app['translator']), new WriteMetadataJob($app['dispatcher'], $logger, $app['translator']),
new WebhookJob($app['dispatcher'], $logger, $app['translator']), new WebhookJob($app['dispatcher'], $logger, $app['translator']),
new IndexerJob($app['dispatcher'], $logger, $app['translator']),
]; ];
}); });
} }

View File

@@ -39,7 +39,17 @@ class SubdefsEditor extends AbstractEditor
return <<<EOF return <<<EOF
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<tasksettings> <tasksettings>
<embedded>0</embedded> <embedded>1</embedded>
<sbas>0</sbas>
<type_image>1</type_image>
<type_video>1</type_video>
<type_audio>1</type_audio>
<type_document>1</type_document>
<type_flash>1</type_flash>
<type_unknown>1</type_unknown>
<flush>5</flush>
<maxrecs>20</maxrecs>
<maxmegs>256</maxmegs>
</tasksettings> </tasksettings>
EOF; EOF;
} }
@@ -50,7 +60,17 @@ EOF;
protected function getFormProperties() protected function getFormProperties()
{ {
return [ return [
'embedded' => static::FORM_TYPE_BOOLEAN, 'sbas' => static::FORM_TYPE_INTEGER,
'type_image' => static::FORM_TYPE_BOOLEAN,
'type_video' => static::FORM_TYPE_BOOLEAN,
'type_audio' => static::FORM_TYPE_BOOLEAN,
'type_document' => static::FORM_TYPE_BOOLEAN,
'type_flash' => static::FORM_TYPE_BOOLEAN,
'type_unknown' => static::FORM_TYPE_BOOLEAN,
'flush' => static::FORM_TYPE_INTEGER,
'maxrecs' => static::FORM_TYPE_INTEGER,
'maxmegs' => static::FORM_TYPE_INTEGER,
'embedded' => static::FORM_TYPE_BOOLEAN
]; ];
} }
} }

View File

@@ -1,58 +0,0 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2014 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Phrasea\TaskManager\Job;
use Alchemy\Phrasea\TaskManager\Editor\IndexerEditor;
class IndexerJob extends AbstractJob
{
/**
* {@inheritdoc}
*/
public function getName()
{
return $this->translator->trans('Indexation task');
}
/**
* {@inheritdoc}
*/
public function getJobId()
{
return 'Indexer';
}
/**
* {@inheritdoc}
*/
public function getDescription()
{
return $this->translator->trans("Indexing Batch (collections/databox)");
}
/**
* {@inheritdoc}
*/
public function getEditor()
{
return new IndexerEditor($this->translator);
}
/**
* {@inheritdoc}
*/
protected function doJob(JobData $data)
{
$app = $data->getApplication();
$app['elasticsearch.indexer']->indexScheduledRecords();
}
}

View File

@@ -1 +0,0 @@
{% extends 'admin/task-manager/task-editor/task.html.twig' %}

View File

@@ -1,162 +0,0 @@
{% extends 'admin/task-manager/task-editor/task.html.twig' %}
{% block form %}
<div class="control-group">
<label class="control-label">{{ 'MySQL Host' | trans }}</label>
<div class="controls">
<input type="text" name="host" value="">
</div>
<label class="control-label">{{ 'MySQL Port' | trans }}</label>
<div class="controls">
<input type="text" name="port" value="">
</div>
<label class="control-label">{{ 'MySQL Database' | trans }}</label>
<div class="controls">
<input type="text" name="base" value="">
</div>
<label class="control-label">{{ 'MySQL Login' | trans }}</label>
<div class="controls">
<input type="text" name="user" value="">
</div>
<label class="control-label">{{ 'MySQL password' | trans }}</label>
<div class="controls">
<input type="password" name="password" value="">
</div>
<label class="control-label">{{ 'MySQL connection charset' | trans }}</label>
<div class="controls">
<input type="text" name="charset" class="input-small" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Socket port' | trans }}</label>
<div class="controls">
<input type="text" name="socket" class="input-small" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Debug binary mask' | trans }}</label>
<div class="controls">
<input type="text" name="debugmask" class="input-small" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Default language for thesaurus candidates' | trans }}</label>
<div class="controls">
<input type="text" name="clng" class="input-small" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Enable stemming languages' | trans }}</label>
<div class="controls">
<input type="text" name="stem" class="input-small" value="">
<span class="help-inline">{{ 'example : fr,en' | trans }}</span>
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Sort records with an empty field' | trans }}</label>
<div class="controls">
<select name="sortempty">
<option value="">{{ 'Hide records' | trans }}</option>
<option value="A">{{ 'At the beginning' | trans }}</option>
<option value="Z">{{ 'At the end' | trans }}</option>
</select>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" name="nolog">
{{ 'Do not log, output to console' | trans }}
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" name="winsvc_run">
{{ 'Run as application, not as service' | trans }}
<span class="help-inline">({{ 'Windows specific' | trans }})</span>
</label>
</div>
</div>
<center>
<div style="margin:10px; padding:5px; border:1px #000000 solid; font-family:monospace; font-size:14px; text-align:left; color:#00e000; background-color:#404040" id="cmd">cmd</div>
</center>
{% endblock %}
{% block javascript %}
function taskFillGraphic(xml)
{
if (xml) {
xml = $.parseXML(xml);
xml = $(xml);
var isyes = function(v) {
v = v.toUpperCase().trim();
return v=='O' || v=='Y' || v=='OUI' || v=='YES' || v=='1';
}
with(document.forms['graphicForm'])
{
host.value = xml.find("host").text();
port.value = xml.find("port").text();
base.value = xml.find("base").text();
user.value = xml.find("user").text();
socket.value = xml.find("socket").text();
password.value = xml.find("password").text();
clng.value = xml.find("clng").text();
nolog.checked = isyes(xml.find("nolog").text());
winsvc_run.checked = isyes(xml.find("winsvc_run").text());
charset.value = xml.find("charset").text();
stem.value = xml.find("stem").text();
sortempty.value = xml.find("sortempty").text();
debugmask.value = 0|xml.find("debugmask").text();
}
var cmd = '';
with(document.forms['graphicForm'])
{
cmd += "/path/to/indexer";
if(host.value)
cmd += " -h=" + host.value;
if(port.value)
cmd += " -P=" + port.value;
if(base.value)
cmd += " -b=" + base.value;
if(user.value)
cmd += " -u=" + user.value;
if(password.value)
cmd += " -p=xxxxxx"; // + password.value;
if(socket.value)
cmd += " --socket=" + socket.value;
if(charset.value)
cmd += " --default-character-set=" + charset.value;
cmd += " -o";
if(nolog.checked)
cmd += " -n";
if(clng.value)
cmd += " -c=" + clng.value;
if(stem.value)
cmd += " --stem=" + stem.value;
if(sortempty.value)
cmd += " --sort-empty=" + sortempty.value;
if(debugmask.value)
cmd += " -d=" + debugmask.value;
if(winsvc_run.checked)
cmd += " --run";
}
$('#cmd').html(cmd);
}
}
$(document).ready(function(){
$("#graphicForm *").change(function(){
taskFillGraphic(null);
});
});
{% endblock %}

View File

@@ -1,6 +1,62 @@
{% extends 'admin/task-manager/task-editor/task.html.twig' %} {% extends 'admin/task-manager/task-editor/task.html.twig' %}
{% block form %} {% block form %}
<div class="control-group">
<label class="control-label"> {{ 'Databox' | trans }}</label>
<div class="controls">
<select name="sbas">
<option value="">{{ 'All' | trans }}</option>
{% for databox in app['phraseanet.appbox'].get_databoxes() %}
<option value="{{ databox.get_sbas_id() }}">
{{ databox.get_viewname() }}
({{ databox.get_sbas_id() }})
</option>
{% endfor %}
</select>
</div>
</div>
<div class="control-group">
<label class="control-label"> {{ 'recordtype' | trans }}</label>
<div class="controls">
<label class="checkbox inline">
<input type="checkbox" name="type_image" value="image"> {{ 'image' | trans }}
</label>
<label class="checkbox inline">
<input type="checkbox" name="type_video" value="video"> {{ 'video' | trans }}
</label>
<label class="checkbox inline">
<input type="checkbox" name="type_audio" value="audio"> {{ 'audio' | trans }}
</label>
<label class="checkbox inline">
<input type="checkbox" name="type_document" value="document"> {{ 'document' | trans }}
</label>
<label class="checkbox inline">
<input type="checkbox" name="type_flash" value="flash"> {{ 'flash' | trans }}
</label>
<label class="checkbox inline">
<input type="checkbox" name="type_unknown" value="unknown"> {{ 'unknown' | trans }}
</label>
</div>
</div>
<div class="control-group">
<label class="control-label"> {{ 'Number of records to process per batch' | trans }}</label>
<div class="controls">
<input class="formElem input-mini" type="text" name="flush" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Restart the task every X records' | trans }}</label>
<div class="controls">
<input class="formElem input-mini" type="text" name="maxrecs" value="">
</div>
</div>
<div class="control-group">
<label class="control-label">{{ 'Restart the task if memory reaches' | trans }}</label>
<div class="controls">
<input class="formElem input-mini" type="text" name="maxmegs" value="">
<span class="help-inline">Mo</span>
</div>
</div>
<div class="control-group"> <div class="control-group">
<div class="controls"> <div class="controls">
<label class="checkbox"> <label class="checkbox">
@@ -13,6 +69,18 @@
{% block javascript %} {% block javascript %}
function minmax(v, _min, _max)
{
if(v == NaN || v < _min)
{
v = _min;
}
else if(v > _max)
{
v = _max;
}
return v;
}
function taskFillGraphic(xml) function taskFillGraphic(xml)
{ {
if (xml) { if (xml) {
@@ -22,6 +90,26 @@
with(document.forms['graphicForm']) with(document.forms['graphicForm'])
{ {
embedded.checked = !!parseInt(xml.find("embedded").text()); embedded.checked = !!parseInt(xml.find("embedded").text());
type_image.checked = !!parseInt(xml.find("type_image").text());
type_video.checked = !!parseInt(xml.find("type_video").text());
type_audio.checked = !!parseInt(xml.find("type_audio").text());
type_document.checked = !!parseInt(xml.find("type_document").text());
type_flash.checked = !!parseInt(xml.find("type_flash").text());
type_unknown.checked = !!parseInt(xml.find("type_unknown").text());
flush.value = minmax(parseInt(xml.find("flush").text()), 1, 100);
maxrecs.value = minmax(parseInt(xml.find("maxrecs").text()), 10, 100);
maxmegs.value = minmax(parseInt(xml.find("maxmegs").text()), 64, 512);
for(i in sbas.options)
{
if(sbas.options[i].value == parseInt(xml.find("sbas").text()) )
{
sbas.options[i].selected = true;
}
else
{
sbas.options[i].selected = false;
}
}
} }
} }
} }

View File

@@ -57,7 +57,7 @@ define([
if(url && url.indexOf('#') !== 0) { if(url && url.indexOf('#') !== 0) {
// This is defined in admin/index.html.twig // This is defined in admin/index.html.twig
window.loadRightAjax(url, link.attr("method") || "GET"); // window.loadRightAjax(url, link.attr("method") || "GET");
} }
} }
}); });