Joomla-Sermon-Distributor/admin/tmpl/manual_updater/default.php

204 lines
9.4 KiB
PHP

<?php
/*-------------------------------------------------------------------------------------------------------------| www.vdm.io |------/
____ ____ __ __ __
/\ _`\ /\ _`\ __ /\ \__ __/\ \ /\ \__
\ \,\L\_\ __ _ __ ___ ___ ___ ___ \ \ \/\ \/\_\ ____\ \ ,_\ _ __ /\_\ \ \____ __ __\ \ ,_\ ___ _ __
\/_\__ \ /'__`\/\`'__\/' __` __`\ / __`\ /' _ `\ \ \ \ \ \/\ \ /',__\\ \ \/ /\`'__\/\ \ \ '__`\/\ \/\ \\ \ \/ / __`\/\`'__\
/\ \L\ \/\ __/\ \ \/ /\ \/\ \/\ \/\ \L\ \/\ \/\ \ \ \ \_\ \ \ \/\__, `\\ \ \_\ \ \/ \ \ \ \ \L\ \ \ \_\ \\ \ \_/\ \L\ \ \ \/
\ `\____\ \____\\ \_\ \ \_\ \_\ \_\ \____/\ \_\ \_\ \ \____/\ \_\/\____/ \ \__\\ \_\ \ \_\ \_,__/\ \____/ \ \__\ \____/\ \_\
\/_____/\/____/ \/_/ \/_/\/_/\/_/\/___/ \/_/\/_/ \/___/ \/_/\/___/ \/__/ \/_/ \/_/\/___/ \/___/ \/__/\/___/ \/_/
/------------------------------------------------------------------------------------------------------------------------------------/
@version 5.0.x
@created 22nd October, 2015
@package Sermon Distributor
@subpackage default.php
@author Llewellyn van der Merwe <https://www.vdm.io/>
@copyright Copyright (C) 2015. All Rights Reserved
@license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
A sermon distributor that links to Dropbox.
/----------------------------------------------------------------------------------------------------------------------------------*/
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\HTML\HTMLHelper as Html;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
use TrueChristianChurch\Component\Sermondistributor\Administrator\Helper\SermondistributorHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\StringHelper;
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->getDocument()->getWebAssetManager();
$wa->useScript('keepalive')->useScript('form.validate');
Html::_('bootstrap.tooltip');
// No direct access to this file
defined('_JEXEC') or die;
// get the needed module for translation
$model = SermondistributorHelper::getModel('external_sources');
?>
<?php if ($this->canDo->get('manual_updater.access')): ?>
<script type="text/javascript">
Joomla.submitbutton = function(task) {
if (task === 'manual_updater.back') {
parent.history.back();
return false;
} else {
var form = document.getElementById('adminForm');
form.task.value = task;
form.submit();
}
}
</script>
<form action="<?php echo Route::_('index.php?option=com_sermondistributor&view=manual_updater'); ?>" method="post" name="adminForm" id="adminForm" class="form-validate" enctype="multipart/form-data">
<?php if (isset($this->items) && ArrayHelper::check($this->items)): ?>
<script type="text/javascript">
// Add spindle-wheel for update:
jQuery(document).ready(function($) {
// waiting spinner
var outerDiv = jQuery('body');
jQuery('<div id="loading"></div>')
.css("background", "rgba(255, 255, 255, .8) url('components/com_sermondistributor/assets/images/import.gif') 50% 15% no-repeat")
.css("top", outerDiv.position().top - jQuery(window).scrollTop())
.css("left", outerDiv.position().left - jQuery(window).scrollLeft())
.css("width", outerDiv.width())
.css("height", outerDiv.height())
.css("position", "fixed")
.css("opacity", "0.80")
.css("-ms-filter", "progid:DXImageTransform.Microsoft.Alpha(Opacity = 80)")
.css("filter", "alpha(opacity = 80)")
.css("display", "none")
.appendTo(outerDiv);
jQuery('#loading').show();
// when page is ready remove and show
jQuery(window).load(function() {
jQuery('#sermondistributor_loader').fadeIn('fast');
jQuery('#loading').hide();
});
});
</script>
<div id="sermondistributor_loader">
<?php echo Html::_('bootstrap.startAccordion', 'dashboard'); ?>
<?php foreach ($this->items as $item): ?>
<?php $key = StringHelper::safe($item->description).$item->id; ?>
<?php $name = '<div id="heading_'. $key .'">'. $item->description . ' <small>(' . Text::_($model->selectionTranslation($item->build, 'build')) . ')</small></div>'; ?>
<?php echo Html::_('bootstrap.addSlide', 'dashboard', $name, $key); ?>
<div class="uk-form-row">
<label class="uk-form-label" >
<?php echo Text::_('COM_SERMONDISTRIBUTOR_ADD_THE_STRONGAPP_GENERATED_ACCESS_TOKENSTRONG_HERE'); ?>
</label>
<input
class="span12"
type="text"
id="sleutel-<?php echo $item->id; ?>"
placeholder="<?php echo Text::_('COM_SERMONDISTRIBUTOR_ADD_TOKEN_HERE'); ?>"
>
</div>
<div class="alert alert-info">
<p><?php echo Text::_('COM_SERMONDISTRIBUTOR_BY_USING_AN_ACCESS_TOKEN_YOU_WILL_BE_ABLE_TO_MAKE_API_CALLS_FOR_YOUR_OWN_ACCOUNT_WITHOUT_GOING_THROUGH_THE_AUTHORIZATION_FLOW_DURING_THIS_MANUAL_UPDATE_OF_THE_LOCAL_LISTINGBR_THE_TOKEN_WILL_NOT_BE_STORED_AND_FOR_SAFETY_THE_TOKEN_WILL_BE_REVOKED_ONCE_THE_UPDATE_IS_COMPLETED_SUCCESSFULLYBR_BTHIS_WILL_MEAN_IT_CAN_ONLY_BE_USED_THIS_ONCEB_YOU_WOULD_NEED_A_NEW_TOKEN_EACH_TIME_YOU_RUN_THIS_UPDATE_MANUALLY_BR_SMALLMAKE_SURE_TO_HAVE_SSL_INPLACE_ON_THIS_PAGE_WHEN_DOING_THIS_UPDATE_AS_AN_EXTRA_SECURITY_MEASURESMALL'); ?></p>
</div>
<?php $targets = SermondistributorHelper::getExternalListingUpdateKeys($item->id, 1, 2); ?>
<?php if (ArrayHelper::check($targets)) : ?>
<?php foreach($targets as $target): ?>
<?php $error = SermondistributorHelper::getUpdateError(0, $item->id.$target.$item->build); ?>
<?php if (StringHelper::check($error)): ?>
<?php $errorKey = StringHelper::safe($item->id.$target.$item->build); ?>
<a class="btn btn-danger" href="#<?php echo 'error'.$errorKey; ?>" data-toggle="modal"><?php echo Text::_('COM_SERMONDISTRIBUTOR_VIEW_ERROR'); ?></a>
<?php echo Html::_('bootstrap.renderModal', 'error'.$errorKey, array('title' => Text::_('COM_SERMONDISTRIBUTOR_THERE_WAS_AN_ERROR_DURING_THE_LAST_UPDATE_ATTEMPT')), $error); ?>
<?php endif; ?>
<button onclick="updateLocalLinks('sleutel-<?php echo $item->id; ?>', <?php echo $target; ?>, <?php echo $item->id; ?>, <?php echo $item->build; ?>)" class="btn btn-big">
<span class="icon-cog"></span>
<?php echo Text::sprintf('COM_SERMONDISTRIBUTOR_UPDATE_LOCAL_LINKS_OF_TARGET_S_EXTERNAL_SOURCE', $target); ?>
</button>
<?php endforeach; ?>
<?php else: ?>
<?php echo Text::_('COM_SERMONDISTRIBUTOR_THERE_HAS_NO_TARGETS_BEEN_SET_PLEASE_MAKE_SURE_TO_ADD_TARGETS_TO_THIS_EXTERNAL_SOURCE'); ?>
<?php endif; ?>
<?php echo Html::_('bootstrap.endSlide'); ?>
<?php endforeach; ?>
<?php echo Html::_('bootstrap.endAccordion'); ?>
</div>
<div id="uploader" style="display:none;">
<center><h1><?php echo Text::_('COM_SERMONDISTRIBUTOR_THE_UPDATE_IS_RUNNING'); ?><span class="loading-dots">.</span></h1><p><b>You can close the browser window!</b><br />This update will continue to run in the background on the server (and can take hours).<br />Check again latter since time of completion, or any errors will be logged and displayed here.</p></center>
</div>
<script>
// token
var token = '<?php echo \JSession::getFormToken(); ?>';
// nice little dot trick :)
jQuery(document).ready( function($) {
var x=0;
setInterval(function() {
var dots = "";
x++;
for (var y=0; y < x%8; y++) {
dots+=".";
}
$(".loading-dots").text(dots);
} , 500);
});
function updateLocalLinks(fieldId, target, id, type)
{
var sleutel = jQuery('#'+fieldId).val();
jQuery('#error-key').remove();
if(sleutel === '') {
jQuery('#'+fieldId).closest('div').prepend('<span id="error-key" style="color:red;"><b>No token was added, please add the token and try again.</b></span>');
} else {
jQuery('#sermondistributor_loader').hide();
jQuery('#loading').css('display', 'block');
jQuery('#uploader').show();
server_updateLocalLinks(target, type, id, sleutel).done(function(result) {
jQuery('#sermondistributor_loader').show();
jQuery('#loading').css('display', 'none');
jQuery('#uploader').hide();
if (result.success) {
var message = ['<h3>The update was successfully completed.</h3>'];
Joomla.renderMessages({'success': message});
} else {
var message = [];
if (result.error) {
message.push(result.error);
message.push('<h3>The update is unable to run, this could be because of the following reasons:</h3>');
} else {
message.push('<h3>An unknown error has occurred.</h3>');
}
Joomla.renderMessages({'error': message});
}
});
}
return false;
}
function server_updateLocalLinks(target, type, id, sleutel)
{
var getUrl = 'index.php?option=com_sermondistributor&task=ajax.updateLocalListingExternal&format=json';
if(id > 0 && token.length == 32 && type > 0 && target > 0){
var request = 'token='+token+'&target='+target+'&type='+type+'&id='+id+'&sleutel='+sleutel;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
</script>
<?php else: ?>
<div class="uk-alert uk-alert-success" data-uk-alert>
<p><?php echo Text::_('COM_SERMONDISTRIBUTOR_NO_MANUAL_UPDATES_AVAILABLE'); ?></p>
</div>
<?php endif; ?>
<input type="hidden" name="task" value="" />
<?php echo Html::_('form.token'); ?>
</form>
<?php else: ?>
<h1><?php echo Text::_('COM_SERMONDISTRIBUTOR_NO_ACCESS_GRANTED'); ?></h1>
<?php endif; ?>