Files
oai-symfony/web/ext/news/Templates/Import/Index.html
2026-07-03 17:53:31 +02:00

180 lines
4.6 KiB
HTML

<f:layout name="Backend/Simple" />
<f:section name="iconButtons">
</f:section>
<f:section name="content">
<h3 class="uppercase">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.header" />
</h3>
<p class="description">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.description" />
</p>
<div class="typo3-message message-warning">
<div class="message-body">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.backupwarning" />
</div>
</div>
<br />
<f:if condition="{error}">
<div class="typo3-message message-error">
<div class="message-header">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.error.configuration.title" />
</div>
<div class="message-body">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:{error}" default="{error}" />
</div>
</div>
</f:if>
<f:if condition="{availableJobs -> f:count()} > 1">
<f:then>
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.choose_a_job" />:
<f:form.select id="jobSelector" options="{availableJobs}" />
<br /><br />
</f:then>
<f:else>
<div class="typo3-message message-information">
<div class="message-body">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.nojobs" />
</div>
</div>
</f:else>
</f:if>
<div id="job" style="display:none;">
<div id="progressBar" style="width:300px;"></div>
<button id="startButton">Start</button>
<br />
</div>
<script type="text/javascript">
var moduleUrl = '{f:format.raw(value: moduleUrl)}';
<![CDATA[
Ext.namespace('Tx_News');
Tx_News.Common = function () {
var pub = {};
var extKey = 'news';
var underscoreToUpperCamelCase = function (subject) {
var matches = subject.match(/(_\w)/g);
if (matches) {
matches.each(function (m) {
subject = subject.replace(m, m.charAt(1).toUpperCase());
});
}
return subject.charAt(0).toUpperCase() + subject.substr(1);
};
var getParameterPrefix = function (mainModuleName, subModuleName) {
return 'tx_' + extKey + '_' + mainModuleName + '_' + extKey + subModuleName.replace(/_/g, '');
};
pub.getExtKey = function () {
return extKey;
};
pub.getBackendRequest = function (mainModuleName, subModuleName, controller, action, parameters) {
var parameterPrefix = getParameterPrefix(mainModuleName, subModuleName);
var params = {};
Ext.apply(parameters, {controller: controller, action: action});
Ext.iterate(parameters, function (key, value) {
params[parameterPrefix + '[' + key + ']'] = value;
});
var request = {
'url': moduleUrl,
'params': params
};
return request;
};
return pub;
}();
Tx_News.Importer = function () {
var pub = {};
var jobInfo = {};
var progressBar;
var runCounter = 0;
var run = function () {
var request = Ext.apply(Tx_News.Common.getBackendRequest('web', 'tx_news_m1', 'Import',
'runJob', {jobClassName: jobInfo.jobClassName, offset: runCounter * jobInfo.increaseOffsetPerRunBy}));
Ext.apply(request, {
success: function () {
var progress = runCounter / jobInfo.runsToComplete;
progressBar.updateProgress(progress, Math.round(100 * progress) + '%');
runCounter++;
if (runCounter <= jobInfo.runsToComplete) {
run();
} else {
progressBar.updateText('Done.');
progressBar.reset();
runCounter = 1;
}
},
failure: function () {
alert('error');
}
});
Ext.Ajax.request(request);
};
var initJob = function () {
Ext.get('job').show();
progressBar = new Ext.ProgressBar({
renderTo: 'progressBar'
});
Ext.get('startButton').on('click', function () {
run();
});
};
var loadJobInfo = function (jobClassName) {
var request = Ext.apply(Tx_News.Common.getBackendRequest('web', 'tx_news_m1', 'Import',
'jobInfo', {jobClassName: jobClassName}));
Ext.apply(request, {
success: function (response) {
jobInfo = (Ext.decode(response.responseText));
Ext.apply(jobInfo, {jobClassName: jobClassName});
initJob();
}
});
Ext.Ajax.request(request);
};
pub.init = function () {
Ext.get('jobSelector').on('change', function () {
var jobClassName = this.getValue();
if (jobClassName != '0') {
loadJobInfo(jobClassName);
} else {
Ext.get('job').hide();
}
});
};
return pub;
}();
Ext.onReady(function () {
Tx_News.Importer.init();
});
]]>
</script>
</f:section>