Files
2025-07-18 16:20:14 +07:00

288 lines
11 KiB
PHP

<?php
/**
* Replace download links with code to support importing resources into Adobe CC
*/
function HookAdobe_linkViewBefore_footer_always()
{
global $lang, $resource, $userref;
if (
!isset($_SERVER['HTTP_USER_AGENT'])
||
!in_array($_SERVER['HTTP_USER_AGENT'], array("InDesign-DAMConnect","PhotoShop-DAMConnect"))
||
($resource["lock_user"] > 0 && $resource["lock_user"] != $userref)
) {
return false;
}
?>
<script>
jQuery(document).ready(function()
{
window.addEventListener("message", function(event) {
if(event.data && event.data.eventType=="assetReadyToPlace")
{
styledalert('<?php echo escape($lang["adobe_link_title"]); ?>','<?php echo escape($lang["adobe_link_copy_successful"]); ?>');
}
});
});
function extractJSON(obj, indent) {
for (const i in obj) {
if (Array.isArray(obj[i]) || typeof obj[i] === 'object') {
console.log(indent + i + ' is array or object');
extractJSON(obj[i], indent + ' > ' + i + ' > ');
} else {
var content = jQuery('.js-textarea').val();
if(content != '')
content = content + "\n";
}
}
}
function sendDownloadDocumentMessageToCCApp(objData) {
var objMessage = {};
objMessage.items = [];
objMessage.items.push({
'assetId' : objData.asset_id,
'versionId' : objData.version_id,
'documentName' : objData.document_name,
'url' : objData.url
});
objMessage.count = objMessage.items.length;
objMessage.eventType = "downloadDocument";
styledalert('<?php echo escape($lang["adobe_link_title"]); ?>','<?php echo escape($lang["adobe_link_import_successful"]); ?>');
window.postMessage(objMessage, '*');
}
function sendDownloadAssetMessageToCCApp(objData) {
var objMessage = {};
objMessage.items = [];
objMessage.items.push({
'assetId' : objData.asset_id,
'versionId' : objData.version_id,
'assetName' : objData.asset_name,
'url' : objData.url,
'placeOnExisting' : objData.placeOnExisting
});
objMessage.count = objMessage.items.length;
objMessage.eventType = "downloadAsset"
window.postMessage(objMessage, '*');
<?php
if ($_SERVER['HTTP_USER_AGENT'] != "InDesign-DAMConnect") {
// Photoshop not always showing the 'Asset ready to place' message
echo "styledalert('" . escape($lang["adobe_link_title"]) . "','" . escape($lang["adobe_link_copy_successful"]) . "');";
}
?>
}
function sendResizePanelMessageToCCApp(objData) {
var objMessage = {};
objMessage.items = [];
objMessage.items.push({
'width' : objData.width,
'height' : objData.height
});
objMessage.count = objMessage.items.length;
objMessage.eventType = "resizePanel"
window.postMessage(objMessage, '*');
}
function AdobeLinkAssetDownload(link){
var objData = {};
objData.url = jQuery(link).attr('data-attribute-path');
objData.asset_id = jQuery(link).attr('data-attribute-ref');
objData.version_id = jQuery(link).attr('data-attribute-ref');
objData.asset_name = jQuery(link).attr('data-attribute-name');
objData.placeOnExisting = true;
sendDownloadAssetMessageToCCApp(objData);
}
function AdobeLinkDocumentDownload(link){
var objData = {};
objData.url = jQuery(link).attr('data-attribute-path');
objData.asset_id = jQuery(link).attr('data-attribute-ref');
objData.version_id = jQuery(link).attr('data-attribute-ref');
objData.document_name = jQuery(link).attr('data-attribute-name');
objData.placeOnExisting = true;
sendDownloadDocumentMessageToCCApp(objData);
}
jQuery('#resizePanel').click(function(){
var objData = {};
var size = jQuery(this).parents('.js-group').find('input').val();
objData.width = size.split(",")[0];
objData.height = size.split(",")[1];
sendResizePanelMessageToCCApp(objData);
});
function AdobeLinkDocumentSave(link){
var objMessage = {};
objMessage.eventType = "uploadDocument";
var objData = {};
objData.uploadUrl = jQuery(link).attr('data-attribute-path');
objMessage.data = objData;
window.postMessage(objMessage, '*');
styledalert('<?php echo escape($lang["adobe_link_saving"]); ?>','<?php echo escape($lang["adobe_link_saving_wait"]); ?>');
window.setTimeout("imgsrc = jQuery('#previewimage').attr('src');jQuery('#previewimage').attr('src',imgsrc + new Date().getTime());",5000);
}
</script>
<?php
}
function HookAdobe_linkViewDownloadbuttonreplace()
{
global $userref, $baseurl, $urlparams, $ref, $resource, $size_info_array, $lang, $adobe_link_asset_extensions;
global $adobe_link_document_extensions, $edit_access, $CSRF_token_identifier, $usersession;
# Adds a special link to the download button.
$adb_ext = $size_info_array["id"] == "" ? $resource['file_extension'] : $size_info_array["extension"];
if (
!isset($_SERVER['HTTP_USER_AGENT'])
||
!in_array($_SERVER['HTTP_USER_AGENT'], array("InDesign-DAMConnect","PhotoShop-DAMConnect"))
||
(!in_array(strtolower($adb_ext), $adobe_link_asset_extensions) && !in_array(strtolower($adb_ext), $adobe_link_document_extensions))
) {
return false;
}
if (in_array(strtolower($adb_ext), $adobe_link_document_extensions) && is_int_loose($resource["lock_user"]) && $resource["lock_user"] != 0 && $resource["lock_user"] != $userref) {
return false;
}
$adobefilename = get_download_filename($ref, '', -1, $adb_ext);
$extraparams = array();
$extraparams["noattach"] = "true";
$extraparams["size"] = $size_info_array["id"];
$extraparams["ext"] = $adb_ext;
// Add a temporary key for this resource download that will be checked by hook in download.php
$adb_tmp_key = adobe_link_genkey($userref, $ref);
$extraparams["adb_key"] = $userref . ":" . $adb_tmp_key;
$path = generateURL($baseurl . "/pages/download.php", $urlparams, $extraparams);
$adobelink = "<a href='" . $path . "'";
$adobelink .= "data-attribute-path='" . escape($path) . "' ";
$adobelink .= "data-attribute-ref='" . escape($ref) . "' ";
$adobelink .= "data-attribute-name='" . escape($adobefilename) . "' ";
if (in_array(strtolower($adb_ext), $adobe_link_asset_extensions)) {
$adobelink .= "onclick='AdobeLinkAssetDownload(this);return false;' ";
$adobelink .= ">" . $lang["adobe_link_import"] . "</a>";
} else {
$adobelink .= "onclick='AdobeLinkDocumentDownload(this);return false;' ";
$adobelink .= ">" . $lang["adobe_link_open"] . "</a>";
}
echo $adobelink;
if ($edit_access && in_array(strtolower($adb_ext), $adobe_link_document_extensions)) {
$extraparams["replace_resource"] = $ref;
$extraparams["processupload"] = "true";
$extraparams["no_exif"] = "yes";
$extraparams[$CSRF_token_identifier] = generateCSRFToken($usersession, "adobe_upload");
$uploadpath = generateURL($baseurl . "/pages/upload_batch.php", $urlparams, $extraparams);
$adobesavelink = "</td><td class='DownloadButton'><a href='" . $uploadpath . "' ";
$adobesavelink .= "data-attribute-path='" . escape($uploadpath) . "' ";
$adobesavelink .= "onclick='AdobeLinkDocumentSave(this);return false;' ";
$adobesavelink .= ">" . $lang["adobe_link_upload_document"] . "</a>";
echo $adobesavelink;
}
return true;
}
function HookAdobe_linkViewOrigdownloadlink()
{
# Adds a special link to the download button.
global $userref, $usergroup, $lang, $ref, $access, $resource, $k, $size_info, $baseurl, $urlparams, $path, $direct_download, $alternative;
global $adobe_link_document_extensions, $adobe_link_asset_extensions, $lang, $edit_access, $adb_ext;
if (
!isset($_SERVER['HTTP_USER_AGENT'])
||
!in_array($_SERVER['HTTP_USER_AGENT'], array("InDesign-DAMConnect","PhotoShop-DAMConnect"))
||
(!in_array(strtolower($resource['file_extension']), $adobe_link_asset_extensions) && !in_array(strtolower($resource['file_extension']), $adobe_link_document_extensions))
) {
return false;
}
if (in_array(strtolower($adb_ext), $adobe_link_document_extensions) && is_int_loose($resource["lock_user"]) && $resource["lock_user"] != 0 && $resource["lock_user"] != $userref) {
return false;
}
$extraparams = array();
$extraparams["noattach"] = "true";
$extraparams["ext"] = $resource['file_extension'];
$adb_tmp_key = adobe_link_genkey($userref, $ref);
$extraparams["adb_key"] = $userref . ":" . $adb_tmp_key;
$path = generateURL($baseurl . "/pages/download.php", $urlparams, $extraparams);
$adobefilename = get_download_filename($ref, '', -1, $resource['file_extension']);
$adobelink = "<a href='" . $path . "'";
$adobelink .= "data-attribute-path='" . escape($path) . "' ";
$adobelink .= "data-attribute-ref='" . escape($ref) . "' ";
$adobelink .= "data-attribute-name='" . escape($adobefilename) . "' ";
if (in_array(strtolower($resource['file_extension']), $adobe_link_asset_extensions)) {
$adobelink .= "onclick='AdobeLinkAssetDownload(this);return false;' ";
$adobelink .= ">" . $lang["adobe_link_import"] . "</a>";
} else {
$adobelink .= "onclick='AdobeLinkDocumentDownload(this);return false;' ";
$adobelink .= ">" . $lang["adobe_link_open"] . "</a>";
}
// Show the link
?>
<tr class="DownloadDBlend">
<td class="DownloadFileName">
<h2>
<?php echo escape(str_replace_formatted_placeholder("%extension", $resource["file_extension"], $lang["originalfileoftype"])); ?>
</h2>
</td>
<td class="DownloadFileSize"><?php echo formatfilesize(filesize_unlimited($path))?></td>
<td class="DownloadButton">
<?php echo $adobelink;
if ($edit_access && in_array(strtolower($resource['file_extension']), $adobe_link_document_extensions)) {
$extraparams["replace_resource"] = $ref;
$extraparams["processupload"] = "true";
$extraparams["no_exif"] = "yes";
$uploadpath = generateURL($baseurl . "/pages/upload_batch.php", $urlparams, $extraparams);
$adobesavelink = "</td><td class='DownloadButton'><a href='" . $uploadpath . "'";
$adobesavelink .= "data-attribute-path='" . escape($uploadpath) . "' ";
$adobesavelink .= "onclick='AdobeLinkDocumentSave(this);return false;' ";
$adobesavelink .= ">" . $lang["adobe_link_upload_document"] . "</a>";
echo $adobesavelink;
?>
</td>
</tr><?php
}
?>
</td>
</tr>
<?php
return true;
}
function HookAdobe_linkViewReplacepreviewlink()
{
global $previewimagelink;
$previewimagelink .= "?reload=" . uniqid();
}