mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
Update templates
This commit is contained in:
@@ -18,7 +18,10 @@
|
|||||||
<script type="text/javascript" src="/assets/tinymce/tinymce.js"></script>
|
<script type="text/javascript" src="/assets/tinymce/tinymce.js"></script>
|
||||||
<script type="text/javascript" src="{{ path('minifier', { 'g' : 'admin' }) }}"></script>
|
<script type="text/javascript" src="{{ path('minifier', { 'g' : 'admin' }) }}"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var p4 = {users:{sel:[]}};
|
var p4 = p4 || {};
|
||||||
|
p4.users = {
|
||||||
|
sel:[]
|
||||||
|
};
|
||||||
var bodySize = {x:0,y:0};
|
var bodySize = {x:0,y:0};
|
||||||
|
|
||||||
var language = {
|
var language = {
|
||||||
@@ -104,17 +107,21 @@
|
|||||||
var dest = link.attr('href');
|
var dest = link.attr('href');
|
||||||
|
|
||||||
if(dest && dest.indexOf('#') !== 0) {
|
if(dest && dest.indexOf('#') !== 0) {
|
||||||
$('#right-ajax').empty().addClass('loading').parent().show();
|
loadRightAjax(dest);
|
||||||
|
|
||||||
$.get(dest, function(data) {
|
|
||||||
enableFormsCallback(data);
|
|
||||||
});
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadRightAjax(url)
|
||||||
|
{
|
||||||
|
$('#right-ajax').empty().addClass('loading').parent().show();
|
||||||
|
$.get(url, function(data) {
|
||||||
|
enableFormsCallback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function activeTree(click)
|
function activeTree(click)
|
||||||
{
|
{
|
||||||
$('#FNDR').treeview({
|
$('#FNDR').treeview({
|
||||||
@@ -126,11 +133,8 @@
|
|||||||
var dest = $(this).attr('href');
|
var dest = $(this).attr('href');
|
||||||
|
|
||||||
$(this).bind('click',function(){
|
$(this).bind('click',function(){
|
||||||
$('#right-ajax').empty().addClass('loading').parent().show();
|
|
||||||
|
|
||||||
$.get(dest, function(data) {
|
loadRightAjax(dest);
|
||||||
enableFormsCallback(data);
|
|
||||||
});
|
|
||||||
$('#tree .selected').removeClass('selected');
|
$('#tree .selected').removeClass('selected');
|
||||||
$(this).parent().addClass('selected');
|
$(this).parent().addClass('selected');
|
||||||
|
|
||||||
|
205
templates/web/admin/task-manager/list.html.twig
Normal file
205
templates/web/admin/task-manager/list.html.twig
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
<div class="page-header">
|
||||||
|
<h1>{% trans 'admin::tasks: planificateur de taches' %}
|
||||||
|
<small style="font-size:16px;">
|
||||||
|
{% trans 'Last update at' %} <span id="pingTime"></span>
|
||||||
|
</small>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form id="taskManagerForm" method="get" name="taskManager" action="{{ path('admin_tasks_list') }}"></form>
|
||||||
|
|
||||||
|
<form id="createTask" method="post" name="createTask" action="{{ path('admin_tasks_task_create') }}">
|
||||||
|
<input type="hidden" name="tcl" value="" />
|
||||||
|
<input type="hidden" name="view" value="GRAPHIC" />
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<table id="task-manager" class="admintable task_manager" cellpadding="0" cellSpacing="0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th style="text-align:center; width:40px;">ID</th>
|
||||||
|
<th style="text-align:center; width:30px;">Informations</th>
|
||||||
|
<th style="text-align:center; width:80px;">{% trans 'admin::tasks: statut de la tache' %}</th>
|
||||||
|
<th style="text-align:center; width:60px;">{% trans 'admin::tasks: process_id de la tache' %}</th>
|
||||||
|
<th style="width:auto;">{% trans 'admin::tasks: nom de la tache' %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr id="TR_SCHED" class="sched even">
|
||||||
|
<td>
|
||||||
|
<div class="btn-group">
|
||||||
|
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li class="schedMenuItem" id="schedulerStart"><a href="#">start</a></li>
|
||||||
|
<li class="schedMenuItem" id="schedulerStop"><a href="#">stop</a></li>
|
||||||
|
<li class="schedMenuItem" id="schedulerLog"><a href="#">log</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td> </td>
|
||||||
|
<td> </td>
|
||||||
|
<td style="text-align:center" id="STATUS_SCHED"></td>
|
||||||
|
<td id="PID_SCHED" style="text-align:center;"> </td>
|
||||||
|
<td style="font-weight:900" class="taskname">TaskManager</td>
|
||||||
|
</tr>
|
||||||
|
{% for task in tasks %}
|
||||||
|
<tr id="task_{{ task.getID() }}" class="task {% if loop.index is odd %}odd{% else %}even{% endif %}">
|
||||||
|
<td>
|
||||||
|
<div class="btn-group">
|
||||||
|
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
|
<span class="caret"></span>
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li class="taskMenuItem" id="taskEdit_{{ task.getID() }}"><a href="#">edit</a></li>
|
||||||
|
<li class="taskMenuItem" id="taskStart_{{ task.getID() }}"><a href="#">start</a></li>
|
||||||
|
<li class="taskMenuItem" id="taskStop_{{ task.getID() }}"><a href="#">stop</a></li>
|
||||||
|
<li class="taskMenuItem" id="taskDelete_{{ task.getID() }}"><a href="#">delete</a></li>
|
||||||
|
<li class="taskMenuItem" id="taskLog_{{ task.getID() }}"><a href="#">log</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:center; font-weight:900">{{ task.getID() }}</td>
|
||||||
|
<td style="text-align:center" class="information"></td>
|
||||||
|
<td style="text-align:center" class="status">{{ task.getStatus() }}</td>
|
||||||
|
<td style="text-align:center" class="pid"></td>
|
||||||
|
<td class="taskname">{{ task.getName() }} [{{ task.getName() }}]</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td colspan="7">
|
||||||
|
<select id="newTaskMenu" style="margin:20px 0;">
|
||||||
|
<option value="">{% trans 'admin::tasks: Nouvelle tache' %}...</option>
|
||||||
|
{% for job in available_jobs %}
|
||||||
|
<option value="{{ job.getClassname() }}">{{ job.getName() }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".schedMenuItem").bind("click", function() {
|
||||||
|
var action = $(this).attr("id");
|
||||||
|
|
||||||
|
switch(action)
|
||||||
|
{
|
||||||
|
case "schedulerStart":
|
||||||
|
$.ajax({
|
||||||
|
url: "../admin/task-manager/scheduler/start",
|
||||||
|
type:"GET",
|
||||||
|
dataType:"json",
|
||||||
|
data : {},
|
||||||
|
success: function(data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "schedulerStop":
|
||||||
|
$.ajax({
|
||||||
|
url: "../admin/task-manager/scheduler/stop",
|
||||||
|
type:"GET",
|
||||||
|
dataType:"json",
|
||||||
|
data : {},
|
||||||
|
success: function(data)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "schedulerLog":
|
||||||
|
window.open("../admin/task-manager/scheduler/log", "scheduler_log");
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$(".taskMenuItem").bind("click", function() {
|
||||||
|
var action = $(this).attr("id").split('_');
|
||||||
|
|
||||||
|
switch(action[0])
|
||||||
|
{
|
||||||
|
case "taskEdit":
|
||||||
|
var a = "../admin/task-manager/task/"+action[1]+"";
|
||||||
|
$("#taskManagerForm").attr("action", a);
|
||||||
|
$("#taskManagerForm").submit();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "taskStart":
|
||||||
|
// first reset the crash counter, then set to 'tostart'
|
||||||
|
$.ajax({
|
||||||
|
url: "../admin/task-manager/task/"+action[1]+"/resetcrashcounter",
|
||||||
|
type:"GET",
|
||||||
|
dataType:"json",
|
||||||
|
data : {},
|
||||||
|
success: function(data)
|
||||||
|
{
|
||||||
|
$.ajax({
|
||||||
|
url: "../admin/task-manager/task/"+action[1]+"/tostart",
|
||||||
|
type:"GET",
|
||||||
|
dataType:"json",
|
||||||
|
data : {},
|
||||||
|
success: function(data)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "taskStop":
|
||||||
|
$.ajax({
|
||||||
|
url: "../admin/task-manager/task/"+action[1]+"/tostop",
|
||||||
|
type:"GET",
|
||||||
|
dataType:"json",
|
||||||
|
data : {signal:15},
|
||||||
|
success: function(data)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "taskDelete":
|
||||||
|
if(confirm("{% trans 'admin::tasks: supprimer la tache ?' %}"))
|
||||||
|
{
|
||||||
|
var a = "../admin/task-manager/task/"+action[1]+"/delete";
|
||||||
|
$("#taskManagerForm").attr("action", a);
|
||||||
|
$("#taskManagerForm").submit();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "taskLog":
|
||||||
|
window.open("../admin/task-manager/task/"+action[1]+"/log", "task"+action[1]+"_log");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$("#newTaskMenu").bind("change", function() {
|
||||||
|
var task_class = $(this).children("option:selected").attr("value");
|
||||||
|
|
||||||
|
$("#createTask INPUT[name=\"tcl\"]").attr("value", task_class);
|
||||||
|
$("#createTask").submit();
|
||||||
|
|
||||||
|
$(this).children("option:first").attr("selected", "selected");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
)
|
||||||
|
</script>
|
||||||
|
|
@@ -85,7 +85,7 @@
|
|||||||
data["taskid"]={{ task.getId() }};
|
data["taskid"]={{ task.getId() }};
|
||||||
data["cls"]="RecordMover";
|
data["cls"]="RecordMover";
|
||||||
data["xml"] = xml;
|
data["xml"] = xml;
|
||||||
$.ajax({ url: "{{ path('admin_tasks_task_facility2', { 'id' : task.getID() }) }}"
|
$.ajax({ url: "{{ path('admin_tasks_task_facility', { 'task' : task.getID() }) }}"
|
||||||
, data: data
|
, data: data
|
||||||
, dataType:'json'
|
, dataType:'json'
|
||||||
, type:"POST"
|
, type:"POST"
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
data["taskid"]={{ task.getId() }};
|
data["taskid"]={{ task.getId() }};
|
||||||
data["cls"]="RecordMover";
|
data["cls"]="RecordMover";
|
||||||
data["xml"] = xml;
|
data["xml"] = xml;
|
||||||
$.ajax({ url: "{{ path('admin_tasks_task_facility2', { 'id' : task.getID() }) }}"
|
$.ajax({ url: "{{ path('admin_tasks_task_facility', { 'task' : task.getID() }) }}"
|
||||||
, data: data
|
, data: data
|
||||||
, dataType:'json'
|
, dataType:'json'
|
||||||
, type:"POST"
|
, type:"POST"
|
||||||
|
@@ -2,11 +2,10 @@
|
|||||||
{% block css %}{% endblock %}
|
{% block css %}{% endblock %}
|
||||||
<div>
|
<div>
|
||||||
<form
|
<form
|
||||||
name="passwordRenewForm"
|
name="task-edit"
|
||||||
method="POST"
|
method="POST"
|
||||||
action="{{ path('admin_tasks_task_save2', {'id' : task.getId()}) }}"
|
action="{{ path('admin_tasks_task_save', {'task' : task.getId()}) }}"
|
||||||
onsubmit="return(false);"
|
class="form-inline no-ajax"
|
||||||
class="form-inline"
|
|
||||||
>
|
>
|
||||||
{% if form.vars.errors|length > 0 %}
|
{% if form.vars.errors|length > 0 %}
|
||||||
{{ form_errors(form) }}
|
{{ form_errors(form) }}
|
||||||
@@ -14,7 +13,7 @@
|
|||||||
|
|
||||||
{{ form_rest(form) }}
|
{{ form_rest(form) }}
|
||||||
|
|
||||||
<a href="{{ path('admin_tasks_list2') }}">{% trans 'Cancel' %}</a>
|
<a href="{{ path('admin_tasks_list') }}">{% trans 'Cancel' %}</a>
|
||||||
<button type="submit" class="btn btn-success btn-trigger " id="taskSaveButton">
|
<button type="submit" class="btn btn-success btn-trigger " id="taskSaveButton">
|
||||||
{% trans "Save" %}
|
{% trans "Save" %}
|
||||||
</button>
|
</button>
|
||||||
@@ -113,7 +112,7 @@
|
|||||||
$("#taskResetCrashCounterButton").click(function()
|
$("#taskResetCrashCounterButton").click(function()
|
||||||
{
|
{
|
||||||
$.ajax({
|
$.ajax({
|
||||||
"url" : "{{ path('admin_tasks_task_reset2', {'id' : task.getId()}) }}",
|
"url" : "{{ path('admin_tasks_task_reset', {'task' : task.getId()}) }}",
|
||||||
"dataType" : "json",
|
"dataType" : "json",
|
||||||
"type" : "POST",
|
"type" : "POST",
|
||||||
success:function(data) {
|
success:function(data) {
|
||||||
@@ -129,7 +128,7 @@
|
|||||||
function xmlFromForm(callback) {
|
function xmlFromForm(callback) {
|
||||||
var data = $("#graphicForm").serializeJSON();
|
var data = $("#graphicForm").serializeJSON();
|
||||||
data["xml"] = $("#txtareaxml").val();
|
data["xml"] = $("#txtareaxml").val();
|
||||||
$.ajax({ url: "{{ path('admin_tasks_xml_from_form', {'id' : task.getId()}) }}"
|
$.ajax({ url: "{{ path('admin_tasks_xml_from_form', {'task' : task.getId()}) }}"
|
||||||
, data: data
|
, data: data
|
||||||
, dataType:'text'
|
, dataType:'text'
|
||||||
, type:"POST"
|
, type:"POST"
|
||||||
@@ -146,26 +145,25 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#taskSaveButton").click(function()
|
$("form[name='task-edit']").on('submit', function()
|
||||||
{
|
{
|
||||||
xmlFromForm(function () {
|
xmlFromForm(function (data) {
|
||||||
$.ajax({ url: "../admin/task-manager2/task/{{task.getID()}}/save/"
|
$("form[name='task-edit'] input[name='settings']").val(data);
|
||||||
, data: {
|
formData = $("form[name='task-edit']").serializeArray();
|
||||||
title:$("#taskTaskname").val(),
|
$.ajax({
|
||||||
active:!!$("#taskTaskActive").attr("checked"),
|
url: "{{ path('admin_tasks_task_save', { 'task' : task.getID() }) }}"
|
||||||
xml:data
|
, data: formData
|
||||||
}
|
|
||||||
, dataType:'json'
|
, dataType:'json'
|
||||||
, type:"POST"
|
, type:"POST"
|
||||||
, async:false
|
, async:false
|
||||||
, success:function(data) {
|
, success:function(data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
$("#taskFormByeBye").submit();
|
loadRightAjax("{{ path('admin_tasks_list') }}");
|
||||||
} else {
|
} else {
|
||||||
if (window.console) {
|
if (window.console) {
|
||||||
console.log(data.message);
|
console.log(data.message);
|
||||||
}
|
}
|
||||||
alert("{% trans %}An error occured{% endtrans %}");
|
alert("{% trans %}An error occured{% endtrans %} "+data.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, error:function(jqXHR, textStatus, errorThrown) {
|
, error:function(jqXHR, textStatus, errorThrown) {
|
||||||
@@ -173,6 +171,8 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@@ -1,226 +0,0 @@
|
|||||||
<div id="taskBody">
|
|
||||||
<!-- _____________ head added part of graphic interface of '{{task.getName()}}' _____________ -->
|
|
||||||
{{task.printInterfaceHEAD()}}
|
|
||||||
<!-- ______________ end of head part of graphic interface of '{{task.getName()}}' ______________ -->
|
|
||||||
|
|
||||||
<!-- _____________ javascript of graphic interface of '{{task.getName()}}' _____________ -->
|
|
||||||
{{task.printInterfaceJS()}}
|
|
||||||
<!-- _____________ end javascript of graphic interface of '{{task.getName()}}' _____________ -->
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
{{task.getName()}} <span id="taskid">id : {{task.getID()}}</span>
|
|
||||||
|
|
||||||
<form name="__ftask" onsubmit="return(false);" method="post" class="form-inline">
|
|
||||||
<label for="taskTaskname">{% trans 'admin::tasks: nom de la tache' %}</label>
|
|
||||||
<input type="text" id="taskTaskname" value="{{task.getTitle()}}" onchange="setDirty();" />
|
|
||||||
<label for="taskTaskActive" class="checkbox">
|
|
||||||
<input type="checkbox" id="taskTaskActive" {% if task.isActive() %}checked="checked"{% endif %} onchange="setDirty();" />
|
|
||||||
{% trans 'admin::tasks: lancer au demarrage du scheduler' %}
|
|
||||||
</label>
|
|
||||||
</form>
|
|
||||||
<div id="idCrashLine" style="display:{% if task.getCrashCounter() == 0 %}none{% endif %}">
|
|
||||||
{% trans 'admin::tasks: Nombre de crashes : ' %} {{task.getCrashCounter()}}
|
|
||||||
|
|
||||||
<button class="btn btn-warning" id="taskResetCrashCounterButton">
|
|
||||||
{% trans 'admin::tasks: reinitialiser el compteur de crashes' %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="taskTabs">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#taskXmlTab">{% trans 'boutton::vue xml' %}</a></li>
|
|
||||||
<li><a href="#taskGuiTab">{% trans 'boutton::vue graphique' %}</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- ______________ graphic interface '{{task.getName()}}' ___________________ -->
|
|
||||||
<div id="taskGuiTab" >
|
|
||||||
{{task.getInterfaceHTML()|raw}}
|
|
||||||
</div>
|
|
||||||
<!-- _____________ end graphic interface '{{task.getName()}}' _________________ -->
|
|
||||||
|
|
||||||
<!-- _____________ xml interface _____________ -->
|
|
||||||
<div id="taskXmlTab">
|
|
||||||
<form onsubmit="return(false);" name="fxml" method="post">
|
|
||||||
<textarea nowrap id="txtareaxml" style="white-space:pre; width:100%; height:250px" name="txtareaxml" >{{task.getSettings()}}</textarea>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<!-- ___________ end xml interface ___________ -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ___________ form to go back on list ___________ -->
|
|
||||||
<form id="taskFormByeBye" action="./task-manager/tasks/" method="get">
|
|
||||||
</form>
|
|
||||||
<!-- __________ end form to go back on list __________ -->
|
|
||||||
|
|
||||||
|
|
||||||
<button class="btn" id="taskCancelButton">{% trans 'boutton::annuler' %}</button>
|
|
||||||
<button class="btn btn-warning" id="taskSaveButton">{% trans 'boutton::valider' %}</button>
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
function setDirty()
|
|
||||||
{
|
|
||||||
// jsTaskObj.SettingsIsDirty = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
(function( $ ){
|
|
||||||
$.fn.serializeJSON=function() {
|
|
||||||
var json = {};
|
|
||||||
jQuery.map($(this).serializeArray(), function(n, i){
|
|
||||||
json[n['name']] = n['value'];
|
|
||||||
});
|
|
||||||
|
|
||||||
return json;
|
|
||||||
};
|
|
||||||
})( jQuery );
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
|
||||||
$("#taskTabs").tabs({
|
|
||||||
create: function(event, ui) {
|
|
||||||
{% if task.getInterfaceHTML() is empty %}
|
|
||||||
$("#taskTabs").tabs({ disabled: [1], active: 0 });
|
|
||||||
{% else %}
|
|
||||||
$("#taskTabs").tabs({ active: 1 });
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
,
|
|
||||||
beforeActivate: function(event, ui) {
|
|
||||||
switch($(ui.newPanel).attr("id"))
|
|
||||||
{
|
|
||||||
{% if task.getInterfaceHTML() is not empty %}
|
|
||||||
case "taskGuiTab":
|
|
||||||
var context = { acceptTab: true };
|
|
||||||
// click on gui tab : fill the gui from xml, then switch to the gui view
|
|
||||||
$.ajax({ url: "/admin/task-manager/task/checkxml/"
|
|
||||||
, context:context
|
|
||||||
, data: {xml:$("#txtareaxml").val()}
|
|
||||||
, dataType:'text'
|
|
||||||
, type:"POST"
|
|
||||||
, async:false
|
|
||||||
, success:function(data) {
|
|
||||||
if(typeof(taskFillGraphic_{{task.getClass()}}) === "function")
|
|
||||||
{
|
|
||||||
var x = $("#txtareaxml").val();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
taskFillGraphic_{{task.getClass()}}(x);
|
|
||||||
}
|
|
||||||
catch(e)
|
|
||||||
{
|
|
||||||
alert("{% trans "An error occured" %}");
|
|
||||||
console.log(e);
|
|
||||||
context.acceptTab = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, error:function(jqXHR, textStatus, errorThrown) {
|
|
||||||
this.acceptTab = false;
|
|
||||||
alert("Erreur XML:\n\n" + jqXHR.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return context.acceptTab;
|
|
||||||
|
|
||||||
break;
|
|
||||||
{% endif %}
|
|
||||||
case "taskXmlTab":
|
|
||||||
// click on xml tab : fill the xml from gui, then switch to the xml view
|
|
||||||
var data = $("form[name='graphicForm']").serializeJSON();
|
|
||||||
data["__action"] = "FORM2XML";
|
|
||||||
data["__xml"] = $("#txtareaxml").val();
|
|
||||||
$.ajax({ url: "/admin/task-manager/task/{{task.getID()}}/facility/"
|
|
||||||
, data: data
|
|
||||||
, dataType:'text'
|
|
||||||
, type:"POST"
|
|
||||||
, async:false
|
|
||||||
, success:function(data) {
|
|
||||||
$("#txtareaxml").val(data);
|
|
||||||
}
|
|
||||||
, error:function(jqXHR, textStatus, errorThrown) {
|
|
||||||
alert(jqXHR.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#taskResetCrashCounterButton").click(function()
|
|
||||||
{
|
|
||||||
// click on resetCrashCounter button
|
|
||||||
$.ajax({ url: "/admin/task-manager/task/{{task.getID()}}/resetcrashcounter/"
|
|
||||||
, data: {}
|
|
||||||
, dataType:'json'
|
|
||||||
, type:"GET"
|
|
||||||
, async:false
|
|
||||||
, success:function(data) {
|
|
||||||
if(data)
|
|
||||||
{
|
|
||||||
$("#idCrashLine").hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$("#taskSaveButton").click(function()
|
|
||||||
{
|
|
||||||
// click on save button
|
|
||||||
|
|
||||||
var data = $("form[name='graphicForm']").serializeJSON();
|
|
||||||
data["__action"] = "FORM2XML";
|
|
||||||
data["__xml"] = $("#txtareaxml").val();
|
|
||||||
$.ajax({ url: "/admin/task-manager/task/{{task.getID()}}/facility/"
|
|
||||||
, data: data
|
|
||||||
, dataType:'text'
|
|
||||||
, type:"POST"
|
|
||||||
, async:false
|
|
||||||
, success:function(data) {
|
|
||||||
$("#txtareaxml").val(data);
|
|
||||||
$.ajax({ url: "/admin/task-manager/task/{{task.getID()}}/save/"
|
|
||||||
, data: {
|
|
||||||
title:$("#taskTaskname").val(),
|
|
||||||
active:!!$("#taskTaskActive").attr("checked"),
|
|
||||||
xml:data
|
|
||||||
}
|
|
||||||
, dataType:'json'
|
|
||||||
, type:"POST"
|
|
||||||
, async:false
|
|
||||||
, success:function(data) {
|
|
||||||
if (data.success) {
|
|
||||||
$("#taskFormByeBye").submit();
|
|
||||||
} else {
|
|
||||||
if (window.console) {
|
|
||||||
console.log(data.message);
|
|
||||||
}
|
|
||||||
alert("{% trans %}An error occured{% endtrans %}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, error:function(jqXHR, textStatus, errorThrown) {
|
|
||||||
alert("Erreur XML:\n\n" + jqXHR.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
, error:function(jqXHR, textStatus, errorThrown) {
|
|
||||||
alert(jqXHR.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$("#taskCancelButton").click(function()
|
|
||||||
{
|
|
||||||
// click on cancel button
|
|
||||||
$("#taskFormByeBye").submit();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
@@ -1,352 +0,0 @@
|
|||||||
<div class="page-header">
|
|
||||||
<h1>{% trans 'admin::tasks: planificateur de taches' %}
|
|
||||||
<small style="font-size:16px;">
|
|
||||||
{% trans 'Last update at' %} <span id="pingTime"></span>
|
|
||||||
</small>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<form id="taskManagerForm" method="get" name="taskManager" action="{{ path('admin_tasks_list') }}"></form>
|
|
||||||
|
|
||||||
<form id="createTask" method="post" name="createTask" action="{{ path('admin_tasks_task_create') }}">
|
|
||||||
<input type="hidden" name="tcl" value="" />
|
|
||||||
<input type="hidden" name="view" value="GRAPHIC" />
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<table class="admintable task_manager" cellpadding="0" cellSpacing="0">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th></th>
|
|
||||||
<th style="text-align:center; width:40px;">ID</th>
|
|
||||||
<th style="text-align:center; width:30px;">!</th>
|
|
||||||
<th style="text-align:center; width:80px;">{% trans 'admin::tasks: statut de la tache' %}</th>
|
|
||||||
<th style="text-align:center; width:60px;">{% trans 'admin::tasks: process_id de la tache' %}</th>
|
|
||||||
<th style="text-align:center; width:120px;">{% trans 'admin::tasks: etat de progression de la tache' %}</th>
|
|
||||||
<th style="width:auto;">{% trans 'admin::tasks: nom de la tache' %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr id="TR_SCHED" class="sched even">
|
|
||||||
<td>
|
|
||||||
<div class="btn-group">
|
|
||||||
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
|
|
||||||
<span class="caret"></span>
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li class="schedMenuItem" id="schedulerStart"><a href="#">start</a></li>
|
|
||||||
<li class="schedMenuItem" id="schedulerStop"><a href="#">stop</a></li>
|
|
||||||
<li class="schedMenuItem" id="schedulerLog"><a href="#">log</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td> </td>
|
|
||||||
<td> </td>
|
|
||||||
<td style="text-align:center" id="STATUS_SCHED"></td>
|
|
||||||
<td id="PID_SCHED" style="text-align:center;"> </td>
|
|
||||||
<td> </td>
|
|
||||||
<td style="font-weight:900" class="taskname">TaskManager</td>
|
|
||||||
</tr>
|
|
||||||
{% for task in task_manager.getTasks() %}
|
|
||||||
<tr id="TR_{{ task.getID() }}" class="task {% if loop.index is odd %}odd{% else %}even{% endif %}">
|
|
||||||
<td>
|
|
||||||
<div class="btn-group">
|
|
||||||
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#">
|
|
||||||
<span class="caret"></span>
|
|
||||||
</a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li class="taskMenuItem" id="taskEdit_{{ task.getID() }}"><a href="#">{% trans 'Edit' %}</a></li>
|
|
||||||
<li class="taskMenuItem" id="taskStart_{{ task.getID() }}"><a href="#">{% trans 'Start' %}</a></li>
|
|
||||||
<li class="taskMenuItem" id="taskStop_{{ task.getID() }}"><a href="#">{% trans 'Stop' %}</a></li>
|
|
||||||
<li class="taskMenuItem" id="taskDelete_{{ task.getID() }}"><a href="#">{% trans 'Delete' %}</a></li>
|
|
||||||
<li class="taskMenuItem" id="taskLog_{{ task.getID() }}"><a href="#">{% trans 'Logs' %}</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td style="text-align:center; font-weight:900">{{ task.getID() }}</td>
|
|
||||||
<td style="text-align:center"><img id="WARNING_{{ task.getID() }}" src="/skins/icons/alert.png" title="" style="display:none;"/></td>
|
|
||||||
<td style="text-align:center" id="STATUS_{{ task.getID() }}"></td>
|
|
||||||
<td style="text-align:center" id="PID_{{ task.getID() }}"> </td>
|
|
||||||
<td>
|
|
||||||
<div style="position:relative; top:0px; left:0px; right:0px;" >
|
|
||||||
<div id="COMPBOX_{{ task.getID() }}" style="position:absolute; top:1px; left:3px; right:3px; height:5px; background-color:#787878">
|
|
||||||
<div id="COMP_{{ task.getID() }}" style="position:absolute; top:1px; left:0px; width:0%; height:3px; background-color:#FFFF80">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td class="taskname">{{ task.getTitle() }} [{{ task.getName() }}]</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
<tfoot>
|
|
||||||
<tr>
|
|
||||||
<td colspan="7">
|
|
||||||
<select id="newTaskMenu" style="margin:20px 0;">
|
|
||||||
<option value="">{% trans 'admin::tasks: Nouvelle tache' %}...</option>
|
|
||||||
{% for t in task_manager.getAvailableTasks() %}
|
|
||||||
<option value="{{ t.class }}" {% if t.err %}disabled="disabled"{% endif %}>{{ t.name }}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
function pingScheduler(repeatTimeout)
|
|
||||||
{
|
|
||||||
if(typeof window.TMTimer == 'number')
|
|
||||||
{
|
|
||||||
window.clearTimeout(window.TMTimer);
|
|
||||||
delete window.TMTimer;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the page is unloaded, no need to ping nor repeat
|
|
||||||
if($("#STATUS_SCHED").length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
$.ajax(
|
|
||||||
{
|
|
||||||
url:'/admin/task-manager/tasks/',
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data:{rnd:Math.random()},
|
|
||||||
contentType:"application/json; charset=utf-8",
|
|
||||||
success:function(ret)
|
|
||||||
{
|
|
||||||
if(ret.time)
|
|
||||||
$("#pingTime").empty().append(ret.time);
|
|
||||||
|
|
||||||
if(ret.scheduler)
|
|
||||||
{
|
|
||||||
if(ret.scheduler.status)
|
|
||||||
$("#STATUS_SCHED").html(ret.scheduler.status);
|
|
||||||
else
|
|
||||||
$("#STATUS_SCHED").html('');
|
|
||||||
}
|
|
||||||
if(ret.scheduler && ret.scheduler.pid)
|
|
||||||
{
|
|
||||||
$("#PID_SCHED").html(ret.scheduler.pid);
|
|
||||||
$("#schedulerStart").addClass("disabled");
|
|
||||||
$("#schedulerStop").removeClass("disabled");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#PID_SCHED").html('-');
|
|
||||||
$("#schedulerStart").removeClass("disabled");
|
|
||||||
$("#schedulerStop").addClass("disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(ret.tasks)
|
|
||||||
{
|
|
||||||
for(id in ret.tasks)
|
|
||||||
{
|
|
||||||
if(ret.tasks[id].status)
|
|
||||||
{
|
|
||||||
$("#STATUS_"+id).html(ret.tasks[id].status);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#STATUS_"+id).html('');
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ret.tasks[id].pid)
|
|
||||||
{
|
|
||||||
$("#PID_"+id).html(ret.tasks[id].pid);
|
|
||||||
|
|
||||||
$("#taskEdit_"+id).addClass("disabled");
|
|
||||||
$("#taskStop_"+id).removeClass("disabled");
|
|
||||||
$("#taskStart_"+id).addClass("disabled");
|
|
||||||
$("#taskDelete_"+id).addClass("disabled");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#PID_"+id).html('-');
|
|
||||||
|
|
||||||
$("#taskEdit_"+id).removeClass("disabled");
|
|
||||||
$("#taskDelete_"+id).removeClass("disabled");
|
|
||||||
|
|
||||||
if(ret.tasks[id].status == 'started' || ret.tasks[id].status == 'torestart')
|
|
||||||
{
|
|
||||||
$("#taskStop_"+id).removeClass("disabled");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#taskStop_"+id).addClass("disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ret.scheduler && ret.scheduler.pid && !(ret.tasks[id].status == 'started' || ret.tasks[id].status == 'torestart'))
|
|
||||||
{
|
|
||||||
$("#taskStart_"+id).removeClass("disabled");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#taskStart_"+id).addClass("disabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ret.tasks[id].crashed)
|
|
||||||
{
|
|
||||||
// $("#WARNING_"+id).show().setAttribute("src", "/skins/icons/alert.png");
|
|
||||||
$("#WARNING_"+id).show().attr("title", "crashed "+ret.tasks[id].crashed+" times");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#WARNING_"+id).hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(ret.tasks[id].completed && ret.tasks[id].completed>0 && ret.tasks[id].completed<=100)
|
|
||||||
{
|
|
||||||
$("#COMP_"+id).width(ret.tasks[id].completed + "%");
|
|
||||||
$("#COMPBOX_"+id).show();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#COMPBOX_"+id).hide();
|
|
||||||
$("#COMP_"+id).width('0px');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(repeatTimeout > 0)
|
|
||||||
{
|
|
||||||
window.TMTimer = self.setTimeout(function() {pingScheduler(repeatTimeout);}, 1000*repeatTimeout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
|
||||||
|
|
||||||
$(".schedMenuItem").bind("click", function() {
|
|
||||||
var action = $(this).attr("id");
|
|
||||||
|
|
||||||
switch(action)
|
|
||||||
{
|
|
||||||
case "schedulerStart":
|
|
||||||
$.ajax({
|
|
||||||
url: "/admin/task-manager/scheduler/start",
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data : {},
|
|
||||||
success: function(data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "schedulerStop":
|
|
||||||
$.ajax({
|
|
||||||
url: "/admin/task-manager/scheduler/stop",
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data : {},
|
|
||||||
success: function(data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "schedulerLog":
|
|
||||||
window.open("/admin/task-manager/scheduler/log", "scheduler_log");
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$(".taskMenuItem").bind("click", function() {
|
|
||||||
if ($(this).hasClass('disabled')) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var action = $(this).attr("id").split('_');
|
|
||||||
|
|
||||||
switch(action[0])
|
|
||||||
{
|
|
||||||
case "taskEdit":
|
|
||||||
var a = "/admin/task-manager/task/"+action[1]+"";
|
|
||||||
$("#taskManagerForm").attr("action", a);
|
|
||||||
$("#taskManagerForm").submit();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "taskStart":
|
|
||||||
// first reset the crash counter, then set to 'tostart'
|
|
||||||
$.ajax({
|
|
||||||
url: "/admin/task-manager/task/"+action[1]+"/resetcrashcounter",
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data : {},
|
|
||||||
success: function(data)
|
|
||||||
{
|
|
||||||
$.ajax({
|
|
||||||
url: "/admin/task-manager/task/"+action[1]+"/tostart",
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data : {},
|
|
||||||
success: function(data)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "taskStop":
|
|
||||||
$.ajax({
|
|
||||||
url: "/admin/task-manager/task/"+action[1]+"/tostop",
|
|
||||||
type:"GET",
|
|
||||||
dataType:"json",
|
|
||||||
data : {signal:15},
|
|
||||||
success: function(data)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "taskDelete":
|
|
||||||
if(confirm("{% trans 'admin::tasks: supprimer la tache ?' %}"))
|
|
||||||
{
|
|
||||||
var a = "/admin/task-manager/task/"+action[1]+"/delete";
|
|
||||||
$("#taskManagerForm").attr("action", a);
|
|
||||||
$("#taskManagerForm").submit();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "taskLog":
|
|
||||||
window.open("/admin/task-manager/task/"+action[1]+"/log", "task"+action[1]+"_log");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$("#newTaskMenu").bind("change", function() {
|
|
||||||
|
|
||||||
var task_class = $(this).children("option:selected").attr("value");
|
|
||||||
console.log(task_class);
|
|
||||||
|
|
||||||
if(task_class.substr(0,5) == "task_") // sanity check
|
|
||||||
{
|
|
||||||
$("#createTask INPUT[name=\"tcl\"]").attr("value", task_class);
|
|
||||||
$("#createTask").submit();
|
|
||||||
}
|
|
||||||
|
|
||||||
$(this).children("option:first").attr("selected", "selected");
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
window.TMTimer = self.setTimeout(function() {pingScheduler(2);}, 100); // loop forever every 2 sec
|
|
||||||
|
|
||||||
}
|
|
||||||
)
|
|
||||||
</script>
|
|
||||||
|
|
Reference in New Issue
Block a user