%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/photogallery_user/templates/.default/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/photogallery_user/templates/.default/galleries_recalc.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
{
if ($_REQUEST["AJAX"] == "Y")
{
define("STOP_STATISTICS", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
}
else
{
die();
}
}
\Bitrix\Main\Localization\Loc::loadMessages(__FILE__);
$time = getmicrotime();
if (!CModule::IncludeModule("iblock"))
{
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return false;
}
else if (!CModule::IncludeModule("photogallery"))
{
ShowError(GetMessage("P_MODULE_IS_NOT_INSTALLED"));
return false;
}
$arParams = (is_array($arParams) ? $arParams : array());
if (empty($arParams))
{
$arParams["IBLOCK_ID"] = intVal($_REQUEST["IBLOCK_ID"]);
$arParams["PERMISSION"] = CIBlock::GetPermission($arParams["IBLOCK_ID"]);
}
if ($arParams["PERMISSION"] < "W")
{
ShowError(GetMessage("P_DENIED_ACCESS"));
return false;
}
elseif ($arParams["IBLOCK_ID"] <= 0)
{
ShowError(GetMessage("P_BAD_IBLOCK_ID"));
return false;
}
$arGalleries = unserialize(COption::GetOptionString("photogallery", "UF_GALLERY_SIZE"));
$arGalleries = (is_array($arGalleries) ? $arGalleries : array());
$arGallery = $arGalleries[$arParams["IBLOCK_ID"]];
if ($_REQUEST["AJAX"] == "Y" && check_bitrix_sessid())
{
$result = array();
$iCount = 300;
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"]);
if ($arGallery["status"] != "inprogress" || $_REQUEST["ID"]."" != $arGallery["id"]."")
{
$arGallery = array(
"status" => "done",
"step" => 0,
"elements_cnt" => CIBlock::GetElementCount($arParams["IBLOCK_ID"]),
"element_number" => 0,
"element_id" => 0,
"id" => $_REQUEST["ID"],
"date" => ConvertTimeStamp());
}
else
{
$arFilter[">ID"] = $arGallery["element_id"];
}
$db_res = CIBlockElement::GetList(array("ID" => "ASC"), $arFilter, false, array("nTopCount" => $iCount), array("ID", "IBLOCK_ID", "IBLOCK_SECTION_ID"));
$iCnt = 0;
$bBreaked = false;
while ($res = $db_res->Fetch())
{
$iCnt++;
CPhotogalleryElement::OnRecalcGalleries($res["ID"], $arGallery["id"]);
$arGallery["element_id"] = $res["ID"];
$arGallery["element_number"]++;
if (getmicrotime() - $time > 10)
{
$bBreaked = true;
break;
}
}
$arGallery["status"] = (($iCnt < $iCount && !$bBreaked) ? "done" : "inprogress");
if ($arGallery["status"] == "done")
{
if (getmicrotime() - $time > 10)
{
$arGallery["status"] = "inprogress";
}
else
{
$arGallery["status"] = "inprogress";
$arGallery["step"]++;
$arGalleries[$arParams["IBLOCK_ID"]] = $arGallery;
COption::SetOptionString("photogallery", "UF_GALLERY_SIZE", serialize($arGalleries));
CPhotogalleryElement::OnAfterRecalcGalleries($arParams["IBLOCK_ID"], $arGallery["id"]);
$arGallery["status"] = "done";
$arGallery["step"]--;
}
}
$arGallery["step"]++;
$arGalleries[$arParams["IBLOCK_ID"]] = $arGallery;
COption::SetOptionString("photogallery", "UF_GALLERY_SIZE", serialize($arGalleries));
$arGallery["text"] = str_replace(
array("#ELEMENT_NUMBER#", "#ELEMENTS_CNT#"),
array($arGallery["element_number"], $arGallery["elements_cnt"]),
GetMessage("P_RECALC_1"));
$APPLICATION->RestartBuffer();
echo CUtil::PhpToJSObject($arGallery);
die();
}
CAjax::Init();
?>
<div class="photo-page-galleries-recalc">
<div class="photo-info-box photo-page-galleries-recalc">
<div class="photo-info-box-inner" id="photogallery_result">
<?
if (empty($arGallery))
{
?>
<?=GetMessage("P_RECALC_2")?>
<?
}
elseif ($arGallery["status"] == "inprogress")
{
?>
<?=str_replace("#DATE#", $arGallery["date"], GetMessage("P_RECALC_3"))?>
<?
}
else
{
?>
<?=str_replace("#DATE#", $arGallery["date"], GetMessage("P_RECALC_4"))?>
<?
}
?>
</div>
</div>
<div class="photo-info-box photo-page-galleries-recalc-bar" id="photogallery_bar" <?
if ($arGallery["status"] != "inprogress")
{
?>style="display:none;"<?
}
?>>
<div class="photo-info-box-inner">
<table cellpadding="0" cellspacing="0">
<tr valign="top">
<td>
<div class="pbar-outer" style="width: 400px;">
<div id="pb_photos" class="pbar-inner-green" style="display:block!important; width:<?
if ($arGallery['elements_cnt'] > 0):
echo intVal(doubleval($arGallery['element_number']) * 100 / doubleval($arGallery['elements_cnt']));
else:
echo "1";
endif;
?>%;"> </div>
</div>
<div class="pbar-title-outer" style="width: 400px;">
<div class="pbar-title-inner" id="photogallery_recalc"><?
if ($arGallery['elements_cnt'] > 0):
echo str_replace(
array("#ELEMENT_NUMBER#", "#ELEMENTS_CNT#"),
array($arGallery["element_number"], $arGallery["elements_cnt"]),
GetMessage("P_RECALC_1"));
endif;
?></div>
</div>
</td>
<td>
<div id="photo_window_edit"></div>
</td>
</tr>
</table>
</div>
</div>
<div class="photo-info-box photo-page-galleries-recalc-buttons">
<div class="photo-info-box-inner">
<button onclick="PhotoGalleryRecalcStart(this);" id="ButtonPhotoGalleryRecalcStart"><?=GetMessage("P_START")?></button><?
?><button onclick="PhotoGalleryRecalcContinue(this);" id="ButtonPhotoGalleryRecalcContinue"<?=($arGallery["status"] != "inprogress" ? ' disabled="disabled"' : '')?>><?=GetMessage("P_CONTINUE")?></button><?
?><button onclick="PhotoGalleryRecalcStop(this);" id="ButtonPhotoGalleryRecalcStop" disabled="disabled"><?=GetMessage("P_STOP")?></button>
</div>
</div>
<div id="photogallery_error" style="display: none;" class="errortext">
</div>
</div>
<script type="text/javascript">
var phpVars;
if (typeof(phpVars) != "object")
var phpVars = {};
phpVars.bitrix_sessid = '<?=bitrix_sessid()?>';
var iPhotoGalleryRecalcIndex = <?=($arGallery["status"] != "inprogress" ? "Math.random()" : "'".$arGallery["id"]."'")?>;
function PhotoGalleryRecalc()
{
this.bReady = false;
}
PhotoGalleryRecalc.prototype.Start = function()
{
this.bReady = true;
this.Step(false);
}
PhotoGalleryRecalc.prototype.Stop = function()
{
this.bReady = false;
}
PhotoGalleryRecalc.prototype.Step = function(bContinue)
{
if (this.bReady == false)
{
return false;
}
__this_source = this;
var TID = jsAjax.InitThread();
jsAjax.AddAction(TID, function(data){
try {
jsAjaxUtil.CloseLocalWaitWindow(TID, 'photo_window_edit');
var result = {};
if (data) { eval("var result = " + data + "; "); }
if (result['status'] == 'inprogress')
{
document.getElementById('photogallery_recalc').innerHTML = result['text'];
if (__this_source.bReady == false)
{
document.getElementById('ButtonPhotoGalleryRecalcStart').disabled = false;
document.getElementById('ButtonPhotoGalleryRecalcContinue').disabled = false;
document.getElementById('ButtonPhotoGalleryRecalcStop').disabled = true;
}
else
{
document.getElementById('ButtonPhotoGalleryRecalcStart').disabled = true;
document.getElementById('ButtonPhotoGalleryRecalcContinue').disabled = true;
document.getElementById('ButtonPhotoGalleryRecalcStop').disabled = false;
}
document.getElementById('pb_photos').style.width = (parseInt(parseInt(result['element_number']) * 100 / parseInt(result['elements_cnt']))) + '%';
__this_source.Step();
}
else
{
__this_source.Stop();
if (result['status'] != 'done')
{
document.getElementById('photogallery_error').innerHTML = '<?=CUtil::JSEscape(GetMessage("P_RECALC_5"))?><br />' + data;
document.getElementById('ButtonPhotoGalleryRecalcStart').disabled = false;
document.getElementById('ButtonPhotoGalleryRecalcContinue').disabled = false;
document.getElementById('ButtonPhotoGalleryRecalcStop').disabled = true;
}
else
{
document.getElementById('photogallery_recalc').innerHTML = result['text'];
var res_tmp = '<div class="photo-note-box"><div class="photo-note-box-text"><?=CUtil::JSEscape(GetMessage("P_RECALC_6"))?></div></div>';
document.getElementById('photogallery_result').innerHTML = res_tmp.replace("#DATE#", result["date"]);
document.getElementById('ButtonPhotoGalleryRecalcStart').disabled = false;
document.getElementById('ButtonPhotoGalleryRecalcContinue').disabled = true;
document.getElementById('ButtonPhotoGalleryRecalcStop').disabled = true;
document.getElementById('pb_photos').style.width = '100%';
}
}
} catch (e) {
__this_source.Stop();
for (var ii in e) { document.getElementById('photogallery_error').innerHTML += '<br />' + ii + ': ' + e[ii]; }}
});
var url = '/bitrix/components/bitrix/photogallery_user/templates/.default/galleries_recalc.php';
var res = {'IBLOCK_ID' : '<?=$arParams["IBLOCK_ID"]?>', 'AJAX' : 'Y', 'sessid' : phpVars.bitrix_sessid, 'ID' : iPhotoGalleryRecalcIndex};
if (bContinue === false)
{
res['start'] = 'Y';
}
jsAjaxUtil.ShowLocalWaitWindow(TID, 'photo_window_edit', false);
jsAjax.Send(TID, url, res);
}
var PhotoRecalcObject = new PhotoGalleryRecalc();
function PhotoGalleryRecalcStart(button)
{
document.getElementById('photogallery_bar').style.display = 'block';
iPhotoGalleryRecalcIndex = Math.random();
PhotoRecalcObject.Start();
button.disabled = true;
button.nextSibling.disabled = true;
button.nextSibling.nextSibling.disabled = true;
}
function PhotoGalleryRecalcContinue(button)
{
document.getElementById('photogallery_bar').style.display = 'block';
PhotoRecalcObject.Start();
button.disabled = true;
button.previousSibling.disabled = true;
button.nextSibling.disabled = true;
}
function PhotoGalleryRecalcStop(button)
{
button.disabled = true;
button.previousSibling.disabled = true;
button.previousSibling.previousSibling.disabled = true;
__this_source.Stop();
}
</script>
<?
$APPLICATION->SetTitle(GetMessage("P_TITLE"));
?>