first commit

This commit is contained in:
2025-07-18 16:20:14 +07:00
commit 98af45c018
16382 changed files with 3148096 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
<?php
function HookAnnotateAllInitialise()
{
global $annotate_resource_type_field;
config_register_core_fieldvars("Annotate plugin",['annotate_resource_type_field']);
}
function HookAnnotateAllModifyselect()
{
return " ,r.annotation_count ";
}
function HookAnnotateAllRemoveannotations()
{
global $ref;
ps_query("DELETE FROM annotate_notes WHERE ref = ?",["i",$ref]);
ps_query("UPDATE resource SET annotation_count=0 WHERE ref = ?",["i",$ref]);
}
function HookAnnotateAllRender_actions_add_collection_option($top_actions, array $options, $collection_data, array $urlparams){
global $lang,$pagename,$annotate_pdf_output,$annotate_pdf_output_only_annotated,$baseurl,$collection,$count_result;
// Make sure this check takes place before $GLOBALS["hook_return_value"] can be unset by subsequent calls to hook()
if(isset($GLOBALS["hook_return_value"]) && is_array($GLOBALS["hook_return_value"]))
{
// @see hook() for an explanation about the hook_return_value global
$options = $GLOBALS["hook_return_value"];
}
if ($annotate_pdf_output || $count_result!=0){
$annotate_option = array(
"value" => "annotate",
"label" => $lang["pdfwithnotes"],
"data_attr" => array(
"url" => generateURL(
"{$baseurl}/plugins/annotate/pages/annotate_pdf_config.php",
$urlparams,
array(
"col" => $collection,
)),
),
);
$options[] = $annotate_option;
return $options;
}
}
function HookAnnotateAllAdditionalheaderjs(){
global $baseurl,$k,$baseurl_short,$css_reload_key;
?>
<link rel="stylesheet" type="text/css" media="screen,projection,print" href="<?php echo $baseurl_short?>plugins/annotate/lib/jquery/css/annotation.css?css_reload_key=<?php echo $css_reload_key?>"/>
<script type="text/javascript" src="<?php echo $baseurl_short?>plugins/annotate/lib/jquery/js/jquery.annotate.js?css_reload_key=<?php echo $css_reload_key?>"></script>
<script language="javascript">
function annotate(ref, k, imgElement, annotate_toggle, page, modal){
//Determine displayed (potentially scaled) image dimensions
w = imgElement.offsetWidth;
h = imgElement.offsetHeight;
// Prevent duplication of image if loading is interrupted:
var canvasExists = document.getElementsByClassName("image-annotate-canvas");
if (canvasExists.length != 0)
{
return
}
// Set function's optional arguments:
page = typeof page !== 'undefined' ? page : 1;
modal = typeof modal !== 'undefined' ? modal : false;
// Set defaults:
var url_params = '';
if(page != 1)
{
url_params = '&page=' + page;
}
var target = jQuery("#toAnnotate");
if(modal)
{
target = jQuery("#modal #toAnnotate");
}
target.annotateImage({
getUrl: "<?php echo $baseurl_short?>plugins/annotate/pages/get.php?ref="+ref+"&k="+k+"&pw="+w+"&ph="+h + url_params,
saveUrl: "<?php echo $baseurl_short?>plugins/annotate/pages/save.php?ref="+ref+"&k="+k+"&pw="+w+"&ph="+h + url_params,
deleteUrl: "<?php echo $baseurl_short?>plugins/annotate/pages/delete.php?ref="+ref+"&k="+k + url_params,
useAjax: true,
<?php
if ($k=="")
{?>
editable: true,
<?php
}
else
{ ?>
editable: false,
<?php
} ?>
toggle: annotate_toggle,
modal: modal,
});
}
</script>
<?php }
function HookAnnotateAllExport_add_tables()
{
return array("annotate_notes"=>array());
}
function HookAnnotateAllEdithidefield($field)
{
global $annotate_resource_type_field;
if(isset($field["ref"]) && $field["ref"] == $annotate_resource_type_field)
{
return true;
}
return false;
}

View File

@@ -0,0 +1,123 @@
<?php
function HookAnnotatePreviewReplacepreviewbacktoview(){
global $baseurl,$lang,$ref,$search,$offset,$order_by,$sort,$archive,$k;
$urlparams = array(
"annotate" => (getval("annotate","") == "true" ? "true" : ""),
"ref" => $ref,
"search" => $search,
"offset" => $offset,
"order_by" => $order_by,
"sort" => $sort,
"archive" => $archive,
"k" => $k,
);
?>
<p style="margin:7px 0 7px 0;padding:0;"><a class="enterLink" href="<?php echo generateURL($baseurl . "/pages/view.php", $urlparams); ?>"><?php echo LINK_CARET_BACK ?><?php echo escape($lang["backtoresourceview"]); ?></a>
<?php return true;
}
function HookAnnotatePreviewPreviewimage2 (){
global $ajax,$ext,$baseurl,$ref,$k,$search,$offset,$order_by,$sort,$archive,$lang,
$download_multisize,$baseurl_short,$url,$annotate_ext_exclude,
$annotate_rt_exclude,$annotate_public_view,$annotate_pdf_output,$nextpage,
$previouspage, $alternative, $view_title_field;
$resource=get_resource_data($ref);
$size = resource_download_allowed($resource['ref'], 'scr', $resource['resource_type']) ? ['scr'] : ['pre'];
$preview_path = get_resource_preview($resource, $size);
if($preview_path !== false) {
$preview_path = $preview_path['path'];
}
$path_orig = resource_download_allowed($resource['ref'], '', $resource['resource_type']) ? get_resource_path($resource['ref'], true, '') : $preview_path;
if($preview_path === false && ($path_orig === false || trim($path_orig) == '')) {
return false;
}
if (in_array($resource['file_extension'],$annotate_ext_exclude)){return false;}
if (in_array($resource['resource_type'],$annotate_rt_exclude)){return false;}
if ($k != "" && !$annotate_public_view) {
return false;
}
if (!file_exists($preview_path) && !file_exists($path_orig)) {
return false;
}
?>
<script type="text/javascript">
button_ok = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["ok"])) ?>";
button_cancel = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["cancel"])) ?>";
button_delete = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-delete"])) ?>";
button_add = "&gt&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-add_note"])) ?>";
button_toggle = "&gt;&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-toggle-on"])) ?>";
button_toggle_off = "&gt;&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-toggle-off"])) ?>";
error_saving = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["error-saving"])) ?>";
error_deleting = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["error-deleting"])) ?>";
</script>
<script>
jQuery.noConflict();
</script>
<div id="wrapper" style="display:block;clear:none;float:left;margin: 0px;">
<table cellpadding="0" cellspacing="0">
<tr>
<?php
$urlparams = array(
"ref" => $ref,
"alternative" => $alternative,
"ext" => $ext,
"search" => $search,
"offset" => $offset,
"order_by" => $order_by,
"sort" => $sort,
"archive" => $archive,
"k" => $k
);
if($resource['file_extension'] != "jpg" && $previouspage != -1 && resource_download_allowed($ref, "scr", $resource["resource_type"])) { ?>
<td valign="middle">
<a onClick="return CentralSpaceLoad(this);" href="<?php echo generateURL($baseurl_short . "pages/preview.php", $urlparams,array("page" => $previouspage)); ?>" class="PDFnav pagePrev">&lt;</a>
</td>
<?php
} elseif($nextpage !=-1 && resource_download_allowed($ref, "scr", $resource["resource_type"])) { ?>
<td valign="middle">
<a href="#" class="PDFnav pagePrev">&nbsp;&nbsp;&nbsp;</a>
</td>
<?php
} ?>
<div>
<td>
<img alt="<?php echo escape(i18n_get_translated($resource['field'.$view_title_field] ?? ""));?>"
alt="" id="toAnnotate" onload="annotate(<?php echo (int)$ref?>,'<?php echo escape($k)?>',this ,<?php echo escape(getval("annotate_toggle",true))?>,<?php echo (int) getval('page', 1); ?>, false);" src="<?php echo escape($url)?>" id="previewimage" class="Picture" GALLERYIMG="no" style="display:block;" />
</td>
<?php
if($nextpage != -1 && resource_download_allowed($ref, "scr", $resource["resource_type"])) { ?>
<td valign="middle">
<a onClick="return CentralSpaceLoad(this);" href="<?php echo generateURL($baseurl_short . "pages/preview.php", $urlparams, array("page" => $nextpage)); ?>" class="PDFnav pageNext">&gt;</a>
</td>
<?php
} ?>
</div>
<div style="padding-top:5px;">
<?php if ($annotate_pdf_output){?>
&nbsp;&nbsp;<a style="display:inline;float:right;margin-right:10px;" href="<?php echo generateURL($baseurl. '/plugins/annotate/pages/annotate_pdf_config.php?', $urlparams, ['ext' => $resource["preview_extension"]])?>" >&gt;&nbsp;<?php echo escape($lang["pdfwithnotes"])?></a> &nbsp;&nbsp;
<?php } ?>
</div>
</tr></table>
</div>
<?php
return true;
}

View File

@@ -0,0 +1,54 @@
<?php
function HookAnnotateSearchIcons($collections = false)
{
global $baseurl, $k, $search, $archive, $sort, $offset, $order_by, $result, $n, $lang, $k, $annotate_public_view;
if ($k != '' && !$annotate_public_view) {
return false;
}
if(!is_array($result))
{
?>
<div class="clearerleft"></div>
<div class="ResourcePanelInfo">
<span class="IconUserRatingSpace"></span>
</div>
<?php
return true;
}
if(!$collections && isset($result[$n]) && isset($result[$n]['annotation_count']) && null != $result[$n]['annotation_count'] && 0 != $result[$n]['annotation_count'] && 'pdf' != $result[$n]['file_extension'])
{
?>
<div class="clearerleft"></div>
<div class="ResourcePanelInfo">
<span class="IconUserRatingSpace" style="width:0px;"></span>
<img alt="" src="<?php echo $baseurl?>/plugins/annotate/lib/jquery/images/asterisk_yellow.png" height="10"/>
<a href="<?php echo generateURL($baseurl . '/pages/view.php', ['annotate' => true, 'ref' => $result[$n]['ref'], 'k' => $k, 'search' => $search, 'offset' => $offset, 'order_by' => $order_by, 'sort' => $sort, 'archive' => $archive])?>" onClick="return CentralSpaceLoad(this,true);"><?php echo escape($result[$n]['annotation_count']==1 ? $lang["note-1"] : str_replace("%number", $result[$n]['annotation_count'], $lang["note-2"])); ?></a>
</div>
<?php
}
else
{
?>
<div class="clearerleft"></div>
<div class="ResourcePanelInfo">
<span class="IconUserRatingSpace"></span>
&nbsp;&nbsp;
</div>
<?php
}
}
function HookAnnotateSearchThumbs_resourceshell_height()
{
global $baseurl, $k, $search, $archive, $sort, $offset, $order_by, $result, $n, $lang, $k, $annotate_public_view, $thumbs_displayed_fields_height, $field_height;
if(!('' != $k && !$annotate_public_view))
{
$thumbs_displayed_fields_height = $thumbs_displayed_fields_height + $field_height;
}
}

View File

@@ -0,0 +1,132 @@
<?php
function HookAnnotateViewRenderinnerresourcepreview()
{
global $baseurl_short, $ajax, $ref, $ffmpeg_preview_extension, $resource, $k,
$search, $offset, $order_by, $sort, $archive, $lang, $download_multisize,
$baseurl, $annotate_ext_exclude, $annotate_rt_exclude, $annotate_public_view,
$annotate_pdf_output, $ffmpeg_audio_extensions, $view_title_field, $retina_mode, $resource_view_use_pre, $access;
if(in_array($resource['file_extension'], $annotate_ext_exclude))
{
return false;
}
if(in_array($resource['resource_type'], $annotate_rt_exclude))
{
return false;
}
if ($k != '' && !$annotate_public_view) {
return false;
}
$video_preview_file = get_resource_path($ref, true, 'pre', false, $ffmpeg_preview_extension);
if(file_exists($video_preview_file))
{
return false;
}
if(in_array($resource['file_extension'], $ffmpeg_audio_extensions) || $resource['file_extension'] == "mp3")
{
return false;
}
if((int) $resource['has_image'] !== RESOURCE_PREVIEWS_NONE)
{
?>
<script>
button_ok = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["ok"])) ?>";
button_cancel = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["cancel"])) ?>";
button_delete = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-delete"])) ?>";
button_add = "&gt;&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-add_note"])) ?>";
button_toggle = "&gt;&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-toggle-on"])) ?>";
button_toggle_off = "&gt;&nbsp;<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["action-toggle-off"])) ?>";
error_saving = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["error-saving"])) ?>";
error_deleting = "<?php echo preg_replace("/\r?\n/", "\\n", addslashes($lang["error-deleting"])) ?>";
jQuery.noConflict();
</script>
<?php
$use_watermark = check_use_watermark();
$use_size = (($retina_mode || !$resource_view_use_pre) && $access === 0) ? 'scr' : 'pre';
$imagepath = get_resource_path($ref, true, $use_size, false, $resource['preview_extension'], -1, 1, $use_watermark);
if(!file_exists($imagepath))
{
$use_size = 'thm';
$imagepath=get_resource_path($ref,true, $use_size,false,$resource["preview_extension"],-1,1,$use_watermark);
$imageurl=get_resource_path($ref,false, $use_size,false,$resource["preview_extension"],-1,1,$use_watermark);
}
else
{
$imageurl=get_resource_path($ref,false, $use_size,false,$resource["preview_extension"],-1,1,$use_watermark);
}
if(resource_has_access_denied_by_RT_size($resource['resource_type'], $use_size))
{
return false;
}
if (!file_exists($imagepath))
{
return false;
}
if(file_exists($imagepath))
{
$modal = (getval("modal", "") == "true" ? "true" : "false");
?>
<div id="wrapper" class="annotate-view-wrapper">
<div>
<img alt="<?php echo escape(i18n_get_translated($resource['field'.$view_title_field] ?? ""));?>"
id="toAnnotate" onload="annotate(<?php echo (int) $ref?>,'<?php echo escape($k)?>', this, <?php echo escape(getval("annotate_toggle",true))?>, 1, <?php echo escape($modal); ?>);" src="<?php echo escape($imageurl . "&iaccept=on")?>" id="previewimage" class="Picture" GALLERYIMG="no" style="display:block;" />
</div>
<div class="annotate-view-preview-links" >
<?php
$urlparams = array(
"annotate" => (getval("annotate","") == "true" ? "true" : ""),
"ref" => $ref,
"ext" => $resource["preview_extension"],
"search" => $search,
"offset" => $offset,
"order_by" => $order_by,
"sort" => $sort,
"archive" => $archive,
"k" => $k
); ?>
<a class="enterLink" href="<?php echo generateURL($baseurl_short . "pages/preview.php", $urlparams); ?>" title="<?php echo escape($lang["fullscreenpreview"])?>"><?php echo LINK_CARET . escape($lang["fullscreenpreview"])?></a>
<?php
if($annotate_pdf_output)
{
?>
&nbsp;&nbsp;<a style="display:inline;float:right;" class="nowrap" href="<?php echo generateURL($baseurl_short . 'plugins/annotate/pages/annotate_pdf_config.php', $urlparams)?>" onClick="return CentralSpaceLoad(this);"><?php echo LINK_CARET . $lang["pdfwithnotes"]; ?></a>
<?php
}
?>
</div>
</div>
<?php
}
}
else
{
?>
<div id="previewimagewrapper">
<?php echo get_nopreview_html((string) $resource["file_extension"], $resource["resource_type"]); ?>
</div>
<?php
}
return true;
}
function HookAnnotateViewpreviewlinkbar()
{
// Remove View links from drop down on view page.
// Annotate plugin will add "Full screen preview" link instead.
return true;
}