mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 09:53:15 +00:00
include plugin worker in phraseanet core
This commit is contained in:
@@ -76,6 +76,15 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% if app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::TASKMANAGER')) %}
|
||||
<li class="{% if feature == 'workermanager' %}selected{% endif %}">
|
||||
<a target="right" href="{{ path('worker_admin') }}" class="ajax">
|
||||
<img src="/assets/admin/images/TaskManager.png" />
|
||||
<span>{{ 'Worker Manager' | trans }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
<li class="open">
|
||||
<div class="{% if feature == 'bases' %}selected{% endif %}" style="padding:0 0 2px 0;">
|
||||
<a id="TREE_DATABASES" target="right" href="{{ path('admin_databases') }}" class="ajax">
|
||||
|
77
templates/web/admin/worker-manager/index.html.twig
Normal file
77
templates/web/admin/worker-manager/index.html.twig
Normal file
@@ -0,0 +1,77 @@
|
||||
<h1>Worker</h1>
|
||||
|
||||
<div>
|
||||
<!-- Nav tabs -->
|
||||
<ul class="nav nav-tabs" id="configurationTabs">
|
||||
|
||||
<li class="worker-configuration" role="presentation">
|
||||
<a href="#worker-configuration" aria-controls="worker-configuration" role="tab" data-toggle="tab" data-url="/admin/worker-manager/configuration">
|
||||
{{ "Configuration" | trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="worker-searchengine" role="presentation">
|
||||
<a href="#worker-searchengine" aria-controls="worker-searchengine" role="tab" data-toggle="tab" data-url="/admin/worker-manager/searchengine">
|
||||
{{ "Searchengine" | trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="worker-pull-assets" role="presentation">
|
||||
<a href="#worker-pull-assets" aria-controls="worker-pull-assets" role="tab" data-toggle="tab" data-url="/admin/worker-manager/pull-assets">
|
||||
{{ "Pull Assets" | trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="worker-subview active" role="presentation">
|
||||
<a href="#worker-subview" aria-controls="worker-subview" role="tab" data-toggle="tab" data-url="/admin/worker-manager/subview">
|
||||
{{ "Subview" | trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="worker-metadata" role="presentation">
|
||||
<a href="#worker-metadata" aria-controls="worker-metadata" role="tab" data-toggle="tab" data-url="/admin/worker-manager/metadata">
|
||||
{{ "Metadata" | trans }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-configuration"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-searchengine"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-pull-assets"></div>
|
||||
<div role="tabpanel" class="tab-pane fade in active" id="worker-subview"></div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="worker-metadata"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var contentsDownloaded = {};
|
||||
var remoteContent = function(url) {
|
||||
return $.get(url);
|
||||
};
|
||||
|
||||
var tabs = $('#configurationTabs a[data-toggle="tab"]');
|
||||
|
||||
tabs.on('click', function(){
|
||||
$(this).tab('show');
|
||||
});
|
||||
|
||||
$('.nav-tabs li').on('show.bs.tab', function (e) {
|
||||
if (contentsDownloaded[e.target.hash] === undefined) {
|
||||
$(e.target.hash).empty().html('<img src="/assets/common/images/icons/main-loader.gif" alt="loading"/>');
|
||||
}
|
||||
});
|
||||
|
||||
$('.nav-tabs').on('shown.bs.tab', function (e) {
|
||||
|
||||
if (contentsDownloaded[e.target.hash] === undefined) {
|
||||
var targetDiv = $(e.target.hash);
|
||||
|
||||
remoteContent($(e.target).attr('data-url')).then(function(response) {
|
||||
targetDiv.empty().html(response);
|
||||
contentsDownloaded[e.target.hash] = true;
|
||||
}, function(error) {
|
||||
console.log(error);
|
||||
targetDiv.empty().html('<i class="icon-fire">{{ 'admin:worker Retrieve configuration error'|trans }}</i>');
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
@@ -0,0 +1,39 @@
|
||||
<h3> Config Worker queue retry</h3>
|
||||
|
||||
<p>Set up the delay between two attempts per queue!</p>
|
||||
{{ form_start(form, {'action': path('worker_admin_configuration')}) }}
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.assetsIngest) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.createRecord) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.subdefCreation) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.writeMetadatas) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.webhook) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.exportMail) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.populateIndex) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<input type="submit" class="btn btn-primary" value={{ "Apply retry delay"|trans }} />
|
||||
</div>
|
||||
|
||||
|
||||
{{ form_end(form) }}
|
@@ -0,0 +1 @@
|
||||
<h1>Write metadata setting</h1>
|
@@ -0,0 +1,29 @@
|
||||
<h1>Pull Assets from uploader setting</h1>
|
||||
|
||||
{{ form_start(form, {'action': path('worker_admin_pullAssets')}) }}
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.endpointCommit) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.endpointToken) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.clientSecret) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.clientId) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.pullInterval) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<input type="submit" class="btn btn-primary" value={{ "Initialize pull assets"|trans }} />
|
||||
</div>
|
||||
|
||||
{{ form_end(form) }}
|
@@ -0,0 +1,98 @@
|
||||
<h1>Populate elasticsearch index</h1>
|
||||
|
||||
{{ form_start(form, {'action': path('worker_admin_searchengine')}) }}
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.host) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.port) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
{{ form_row(form.indexName) }}
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label"> {{ 'Databox to populate' | trans }}</label>
|
||||
<div class="controls">
|
||||
<label class="checkbox inline">
|
||||
<input class="subdef_sbas" type="checkbox" value="0"> {{ 'All' | trans }}
|
||||
</label>
|
||||
|
||||
{% for databox in app.getApplicationBox().get_databoxes() %}
|
||||
<label class="checkbox inline">
|
||||
<input class="subdef_sbas" type="checkbox" name="worker_searchengine[sbas][]" value="{{ databox.get_sbas_id() }}"> {{ databox.get_viewname() }}
|
||||
({{ databox.get_sbas_id() }})
|
||||
</label>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<button type="submit" class="btn btn-primary btn-trigger " id="populateButton" form="worker_searchengine">
|
||||
{{ "Populate" |trans }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{{ form_end(form) }}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$(".subdef_sbas").change(function (e) {
|
||||
var alldb = $(".subdef_sbas[value=0]").prop('checked');
|
||||
if (alldb) {
|
||||
$(".subdef_sbas[value!=0]").prop('checked', true);
|
||||
} else {
|
||||
$(".subdef_sbas[value!=0]").attr('disabled', false);
|
||||
}
|
||||
});
|
||||
|
||||
$('#populateButton').on('click', function () {
|
||||
checked = $('input[name="worker_searchengine[sbas][]"]:checked').length;
|
||||
|
||||
if(!checked) {
|
||||
alert("You must check at least one databox to populate.");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$("form[name='worker_searchengine']").submit();
|
||||
});
|
||||
|
||||
$("form[name='worker_searchengine']").on('submit', function () {
|
||||
var form = $(this);
|
||||
var sbasIds = [];
|
||||
$.each($('input[name="worker_searchengine[sbas][]"]:checked'), function() {
|
||||
sbasIds.push($(this).val());
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/admin/worker-manager/populate-status',
|
||||
data: {
|
||||
sbasIds: sbasIds
|
||||
},
|
||||
success: function (data) {
|
||||
if (data == 0) {
|
||||
$('#right-ajax').empty().addClass('loading');
|
||||
$.ajax({
|
||||
url: form.attr('action'),
|
||||
type: 'POST',
|
||||
data: form.serialize(),
|
||||
success: function (data) {
|
||||
$('#right-ajax').removeClass('loading').html(data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
alert("Worker is in process to indexing one of the selected databox!!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
@@ -0,0 +1 @@
|
||||
<h1>Subview setting</h1>
|
Reference in New Issue
Block a user