<?php
use Orchard\Feature\FeatureUtils;
use Orchard\Service\GrassAuth;
use Orchard\Service\Ows\Grass as OwsGrass;
use Orchard\Service\StaticAsset as StaticAssetService;


// Get static asset locations.
$frontendAppName = 'frontend-video';
$cssName = 'frontend-video.css';
$bundleName = 'video.bundle.js';
$divId = 'oa-video-form';
$frontendDistroAppName = 'frontend-distribution-oa-components';

$logger = Zend_Registry::get('applicationLoggerOA');
$staticAssetService = new StaticAssetService($this->awsConfig);

$manifestData = $staticAssetService->loadStaticAssetsManifestJson($frontendAppName, 'manifest.json');
$version = $staticAssetService->getStaticAssetVersionFromJson($manifestData);
$projectManagerCss = $staticAssetService->getStaticAssetUrl($frontendAppName, $version, $cssName);

$manifestDistroData = $staticAssetService->loadStaticAssetsManifestJson($frontendDistroAppName, 'manifest.json');
$distroVersion = $staticAssetService->getStaticAssetVersionFromJson($manifestDistroData);
$frontendDistroCommonScriptsFile = $staticAssetService->getStaticAssetUrl(
    $frontendDistroAppName,
    $distroVersion,
    'commons.bundle.js'
);

$frontendDistroLoadUserFeaturesBeforeScriptsFile = $staticAssetService->getStaticAssetUrl(
    $frontendDistroAppName,
    $distroVersion,
    'load-user-features-before-scripts.bundle.js'
);

$frontendScriptsFile = $staticAssetService->getStaticAssetUrl(
    $frontendAppName,
    $version,
    $bundleName
);

// Grab the GRASS session.
$grassAuth = new GrassAuth(new OwsGrass(logger: $logger));
$grassRefreshUrl = OwsGrass::OA_REFRESH_URI;
$grassBaseUrl = OwsGrass::PROXY_PATH;
$grassSession = $grassAuth->fetchGrassToken()->getJSTokenManagerServiceFormat($grassRefreshUrl, $grassBaseUrl);

$bundleOptions = array(
    'grassSession' => $grassSession,
    'userFeatures' => FeatureUtils::toArray(array('user' => array('username' => $_SESSION['S_USERID']))),
    'userId'=> $_SESSION['S_USERID']
);
?>

<div id="<?= $divId ?>"></div>

<link type="text/css" rel="stylesheet" href="/css/global-redesign.css"/>
<link type="text/css" rel="stylesheet" href="<?=$projectManagerCss?>"/>
<script type="text/javascript" src="<?=$frontendDistroCommonScriptsFile?>"></script>
<script type="text/javascript" src="<?=$frontendDistroLoadUserFeaturesBeforeScriptsFile?>"></script>
<script type="text/javascript">
    window.tokenManager = { token: '<?= $grassSession['token']['token'] ?>' };
    var widthOfDiv = document.getElementById('quickSearch').offsetWidth + 20;
    widthOfDiv += 'px';
    document.getElementById('<?= $divId ?>').style.width = 'calc(100% - ' + widthOfDiv + ')';
    var projectInfoRootElement = document.getElementById('<?= $divId ?>');
    var setProductInFrontendDistro = function () {};
    window.loadUserFeaturesBeforeScripts(
        <?php echo json_encode($bundleOptions);?>,
        ['<?=$frontendScriptsFile?>'],
        function() {
            initVideo(
                projectInfoRootElement,
                {
                    projectId: <?= $this->projectId ?>,
                    productId: <?= $this->releaseId ?>,
                    setProductInFrontendDistro: setProductInFrontendDistro,
                    isOa: true,
                    hasVideoApprovalPermission: <?= json_encode($this->hasVideoApprovalPermission) ?>,
                    hasVideoDownloadPermission: <?= json_encode($this->hasVideoDownloadPermission) ?>
                }
            );
        }
    );
</script>
