4789 lines
123 KiB
PHP
4789 lines
123 KiB
PHP
<?php
|
||
namespace IPS\Theme;
|
||
class class_gallery_front_view extends \IPS\Theme\Template
|
||
{ function comments( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div data-controller='core.front.core.commentFeed, core.front.core.ignoredComments'
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Settings::i()->auto_polling_enabled ):
|
||
$return .= <<<IPSCONTENT
|
||
data-autoPoll
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-baseURL='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
'
|
||
IPSCONTENT;
|
||
|
||
if ( $image->isLastPage() ):
|
||
$return .= <<<IPSCONTENT
|
||
data-lastPage
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-feedID='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->feedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' id='comments' class="ipsEntries ipsEntries--comments ipsEntries--gallery-comments" data-follow-area-id="image-
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "gallery" )->featuredComments( $image->featuredComments(), $image->url()->setQueryString('tab', 'comments')->setQueryString('recommended', 'comments') );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->commentPageCount() > 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsButtonBar'>
|
||
<div class='ipsButtonBar__pagination'>{$image->commentPagination( array('tab') )}</div>
|
||
<div class='ipsButtonBar__end'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->commentMultimodHeader( $image, '#comments' );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
|
||
<form action="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( 'do', 'multimodComment' )->setPage('page',\IPS\Request::i()->page), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" method="post" data-ipsPageAction data-role='moderationTools'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Widget\Request::i()->showDeleted ) ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$commentCount=0; $timeLastRead = $image->timeLastRead(); $lined = FALSE;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Widget\Request::i()->showDeleted ) ) as $comment ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date') ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $lined = TRUE and $commentCount ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<hr class="ipsUnreadBar">
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$commentCount++;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$comment->html()}
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<p class='ipsEmptyMessage' data-role='noComments'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->commentMultimod( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</form>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->commentPageCount() > 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsButtonBar ipsButtonBar--bottom'>
|
||
<div class='ipsButtonBar__pagination'>{$image->commentPagination( array('tab') )}</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->commentForm() || $image->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div id='replyForm' data-role='replyArea' class='ipsComposeAreaWrapper
|
||
IPSCONTENT;
|
||
|
||
if ( !$image->canComment() ):
|
||
$return .= <<<IPSCONTENT
|
||
cTopicPostArea_noSize
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->commentForm() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<p class='ipsComposeArea_warning'><i class='fa-solid fa-circle-info'></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_locked_can_comment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$image->commentForm()}
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->commentUnavailable( 'image_locked_cannot_comment' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( \IPS\Member::loggedIn()->restrict_post ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->commentUnavailable( 'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->commentUnavailable( 'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( !\IPS\Member::loggedIn()->checkPostsPerDay() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->commentUnavailable( 'member_exceeded_posts_per_day' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function image( $image, $commentsAndReviews=FALSE ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $club = $image->container()->club() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Settings::i()->clubs and \IPS\Settings::i()->clubs_header == 'full' ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "clubs", "core" )->header( $club, $image->container() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div id='elClubContainer'>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div data-controller='gallery.front.view.image
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Settings::i()->gallery_nsfw ):
|
||
$return .= <<<IPSCONTENT
|
||
,gallery.front.global.nsfw
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
' data-lightboxURL='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' class="ipsBlockSpacer">
|
||
<div class='ipsPull i-margin-bottom_block'>
|
||
<div class='elGalleryHeader'>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery" )->imageFrame( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hasPreviousOrNext() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery", 'front' )->imageCarouselLinks( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", \IPS\Request::i()->app )->imageInfo( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery", 'front' )->imageComments( $image, $commentsAndReviews );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
</div>
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->container()->club() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageCarouselLink( $carouselImage, $active=false ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$imageWidth=isset( $carouselImage->_dimensions['small'][0] ) ? $carouselImage->_dimensions['small'][0] : 0;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$imageHeight=isset( $carouselImage->_dimensions['small'][1] ) ? $carouselImage->_dimensions['small'][1] : 0;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li
|
||
IPSCONTENT;
|
||
|
||
if ( $active ):
|
||
$return .= <<<IPSCONTENT
|
||
data-active
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $imageWidth && $imageHeight ):
|
||
$return .= <<<IPSCONTENT
|
||
style='--i-ratio:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $imageWidth, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
/
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $imageHeight, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
'
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-image-id="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselImage->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" >
|
||
<figure class='ipsFigure'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $carouselImage->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselImage->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title='
|
||
IPSCONTENT;
|
||
|
||
$sprintf = array($carouselImage->caption); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_this_video', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||
$return .= <<<IPSCONTENT
|
||
' class='ipsFigure__main' data-action="changeImage">
|
||
<video data-role="video" preload="metadata" loading="lazy"
|
||
IPSCONTENT;
|
||
|
||
if ( $carouselImage->masked_file_name ):
|
||
$return .= <<<IPSCONTENT
|
||
poster="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $carouselImage->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
<source src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $carouselImage->original_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$carouselImage->masked_file_name ):
|
||
$return .= <<<IPSCONTENT
|
||
#t=1
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
" type='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselImage->file_type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' />
|
||
</video>
|
||
<i class="ipsFigure__play"></i>
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselImage->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title='
|
||
IPSCONTENT;
|
||
|
||
$sprintf = array($carouselImage->caption); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_this_image', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||
$return .= <<<IPSCONTENT
|
||
' class='ipsFigure__main' data-action="changeImage">
|
||
<img src='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $carouselImage->small_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
' alt="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselImage->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" loading="lazy">
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $carouselImage, FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</figure>
|
||
</li>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageCarouselLinks( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$prev = array_reverse( array_slice( $image->fetchNextOrPreviousImages( 9, 'ASC' ), 0, 4 ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$next = $image->fetchNextOrPreviousImages( 9, 'DESC' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='cGalleryImageThumbs'>
|
||
<ol class='ipsCarousel ipsCarousel--images ipsCarousel--gallery-image-thumbs' id='gallery-image-thumbs' tabindex="0">
|
||
|
||
IPSCONTENT;
|
||
|
||
$counter = 1;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $prev as $id => $carouselImage ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery", 'front' )->imageCarouselLink( $carouselImage );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$counter++;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery", 'front' )->imageCarouselLink( $image, true );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$counter++;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $next as $id => $carouselImage ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery", 'front' )->imageCarouselLink( $carouselImage );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$counter++;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $counter === 10 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
break;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ol>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( 'gallery-image-thumbs' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageComments( $image, $commentsAndReviews ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div data-role="imageComments">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $commentsAndReviews ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( ( $image->directContainer()->allow_reviews && $image->container()->allow_reviews ) && ( $image->directContainer()->allow_comments && $image->container()->allow_comments ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a id="replies"></a>
|
||
<h2 hidden>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'user_feedback', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</h2>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsBox ipsBox--galleryImageCommentsReviews ipsPull'>
|
||
{$commentsAndReviews}
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageFrame( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div id="elGalleryImage" class="elGalleryImage" data-role="imageFrame" data-image-id="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->data ):
|
||
$return .= <<<IPSCONTENT
|
||
data-imagesizes="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->data, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "videoContainer:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="cGallery_videoContainer" data-ips-hook="videoContainer">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "videoContainer:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<video data-controller="core.global.core.embeddedvideo" id="elGalleryVideo" data-role="video" controls preload="auto" width="100%" height="100%"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->masked_file_name ):
|
||
$return .= <<<IPSCONTENT
|
||
poster="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
<source src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->original_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" type="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->file_type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"></source>
|
||
<embed wmode="opaque" autoplay="true" showcontrols="true" showstatusbar="true" showtracker="true" src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->original_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" width="480" height="360" type="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->file_type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"></embed>
|
||
</video>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "videoContainer:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "videoContainer:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "imageContainer:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="cGalleryViewImage" data-role="notesWrapper" data-controller="gallery.front.view.notes" data-imageid="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
data-editable
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-notesdata="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->_notes_json, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ips-hook="imageContainer">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "imageContainer:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_in_lightbox', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipslightbox>
|
||
|
||
IPSCONTENT;
|
||
|
||
$imageWidth=isset( $image->_dimensions['small'][0] ) ? $image->_dimensions['small'][0] : 0;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$imageHeight=isset( $image->_dimensions['small'][1] ) ? $image->_dimensions['small'][1] : 0;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<img src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" alt="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
if ( $imageWidth && $imageHeight ):
|
||
$return .= <<<IPSCONTENT
|
||
width="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $imageWidth, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" height="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $imageHeight, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
title="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-role="theImage" fetchpriority="high" decoding="sync">
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \is_countable( $image->_notes ) AND \count( $image->_notes ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<noscript>
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->_notes as $note ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="cGalleryNote" style="left:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['LEFT'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; top:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['TOP'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; width:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['WIDTH'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; height:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['HEIGHT'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%">
|
||
<div class="cGalleryNote_border"></div>
|
||
<div class="cGalleryNote_note"><div>
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['NOTE'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</div></div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</noscript>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "imageContainer:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageFrame", "imageContainer:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "gallery", 'front' )->nsfwOverlay( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class="cGalleryImageFade">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() OR $image->canDownloadOriginal() OR \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<button type="button" id="elImageTools" popovertarget="elImageTools_menu" class="ipsButton ipsButton--overlay ipsJS_show cGalleryViewImage_controls"><span>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_tools', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</span> <i class="fa-solid fa-caret-down"></i></button>
|
||
<i-dropdown popover id="elImageTools_menu">
|
||
<div class="iDropdown">
|
||
<ul class="iDropdown__items">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li class="ipsResponsive_hidePhone">
|
||
<button type="button" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_image_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="addNote"><i class="fa-solid fa-pen-to-square"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_image_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</button>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$image->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr class="ipsResponsive_hidePhone"></li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'right' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_right', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
<i class="fa-solid fa-rotate-right"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_right', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'left' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_left', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
<i class="fa-solid fa-rotate-left"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_left', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canSetAsAlbumCover() OR $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canSetAsAlbumCover() AND $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_category_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_album_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'both')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_both', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_category', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->canSetAsAlbumCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('setAsPhoto')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="setAsProfile" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-circle-user"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Settings::i()->gallery_nsfw and $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr></li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('toggleNSFW')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="setAsProfile" title="
|
||
IPSCONTENT;
|
||
|
||
if ( $image->nsfw ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_nsfw_on', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_nsfw_off', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-eye-slash"></i>
|
||
IPSCONTENT;
|
||
|
||
if ( $image->nsfw ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_nsfw_on', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_nsfw_off', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('setAsPhoto')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-circle-user"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canDownloadOriginal() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('download'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-download"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
</i-dropdown>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span class="elGalleryImageNav">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hasPreviousOrNext() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( [ 'browse' => 1, 'do' => 'previous' ] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="elGalleryImageNav_prev" data-action="changeImage" data-direction="prev"><i class="fa-solid fa-arrow-left"></i></a>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( [ 'browse' => 1, 'do' => 'next' ] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="elGalleryImageNav_next" data-action="changeImage" data-direction="next"><i class="fa-solid fa-arrow-right"></i></a>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</span>
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageInfo( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<section data-role="imageInfo">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->contentItemMessages( $image->getMessages(), $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hidden() === 1 and $image->canUnhide() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsBox i-padding_3 i-margin-bottom_3">
|
||
<p><i class="fa-solid fa-triangle-exclamation"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_pending_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
<ul class="ipsButtons i-margin-top_3">
|
||
<li><a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--small ipsButton--positive" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-check-circle"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canDelete() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-confirm title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--small ipsButton--negative"><i class="fa-solid fa-xmark"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsBox ipsColumns ipsColumns--lines ipsPull i-margin-bottom_block">
|
||
<div class="ipsColumns__primary">
|
||
<article>
|
||
<div data-role="imageDescription">
|
||
<header class="ipsPageHeader">
|
||
<div class="ipsPageHeader__row">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "header:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsPageHeader__primary" data-ips-hook="header">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "header:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsPageHeader__title">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "title:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<h1 data-ips-hook="title">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "title:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span data-controller="core.front.core.moderation">
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-lock"></i>
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span data-role="editableTitle" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'click_hold_edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span>
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "title:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</h1>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "title:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "badges:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsBadges" data-ips-hook="badges">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "badges:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->badges() as $badge ):
|
||
$return .= <<<IPSCONTENT
|
||
{$badge}
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "badges:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "badges:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->directContainer()->allow_rating ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsPageHeader__rating">{$image->rating()}</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->tags() ) OR ( $image->canEdit() AND $image::canTag( NULL, $image->container() ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->tagsWithPrefix( $image->tags(), $image->prefix(), FALSE, FALSE, ( $image->canEdit() AND ( \count( $image->tags() ) OR $image::canTag( NULL, $image->container() ) ) ) ? $image->url() : NULL );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "header:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "header:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "buttons:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsButtons" data-ips-hook="buttons">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "buttons:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->shareLinks() ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->follow( 'gallery', 'image', $image->id, $image->followersCount() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "buttons:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "buttons:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
<div class="ipsPageHeader__row ipsPageHeader__row--footer">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "footer:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsPageHeader__primary" data-ips-hook="footer">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "footer:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsPhotoPanel ipsPhotoPanel--inline">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $image->author(), 'mini', $image->warningRef() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "author:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsPhotoPanel__text" data-ips-hook="author">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "author:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<p class="ipsPhotoPanel__primary">
|
||
IPSCONTENT;
|
||
|
||
$htmlsprintf = array($image->author()->link( $image->warningRef() )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'byline_nodate_itemprop', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
<ul class="ipsPhotoPanel__secondary ipsList ipsList--sep">
|
||
<li>
|
||
IPSCONTENT;
|
||
|
||
$val = ( $image->date instanceof \IPS\DateTime ) ? $image->date : \IPS\DateTime::ts( $image->date );$return .= $val->html(useTitle: true);
|
||
$return .= <<<IPSCONTENT
|
||
</li>
|
||
<li>
|
||
IPSCONTENT;
|
||
|
||
$pluralize = array( $image->views ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_views_with_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||
$return .= <<<IPSCONTENT
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->author()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href="
|
||
IPSCONTENT;
|
||
|
||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=members&controller=profile&id={$image->author()->member_id}&do=content&type=gallery_image", "front", "profile_content", $image->author()->members_seo_name, 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$sprintf = array($image->author()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'find_users_images', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "author:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "author:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "footer:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "footer:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</header>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "info:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="ipsEntry__post i-padding_3" data-ips-hook="info">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "info:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->description ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsRichText ipsRichText--user" data-controller="core.front.core.lightboxedImages">
|
||
{$image->content()}
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->credit_info OR $image->copyright ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="i-margin-top_4 i-flex i-flex-wrap_wrap i-gap_2">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->credit_info ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="i-flex_11">
|
||
<h3 class="ipsTitle ipsTitle--h6">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_credit_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</h3>
|
||
<div>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->credit_info, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->copyright ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="i-flex_11">
|
||
<h3 class="ipsTitle ipsTitle--h6">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_copyright', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</h3>
|
||
<div>
|
||
©
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->copyright, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "info:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "info:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
<footer class="ipsEntry__footer">
|
||
<menu class="ipsEntry__controls">
|
||
<li>{$image->menu()}</li>
|
||
</menu>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\IPS::classUsesTrait( $image, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reputation( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</footer>
|
||
</article></div>
|
||
|
||
<div class="ipsColumns__secondary i-basis_380 i-padding_3" id="elGalleryImageStats">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "imageStats:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="" data-role="imageStats" data-ips-hook="imageStats">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "imageStats:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->showLocation() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$image->map( 308, 200 )}
|
||
<div class="i-margin-top_2">
|
||
<div class="i-flex i-justify-content_space-between i-flex-wrap_wrap i-gap_1">
|
||
<div>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->loc_short, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
<button type="button" id="elMapForm" popovertarget="elMapForm_menu" class="i-color_soft">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-caret-down"></i></button>
|
||
<i-dropdown popover id="elMapForm_menu">
|
||
<div class="iDropdown">
|
||
<div class="i-padding_2">
|
||
{$image->enableMapForm()}
|
||
</div>
|
||
</div>
|
||
</i-dropdown>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
<hr class="ipsHr">
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->showLocation() AND $image->canEdit() AND $image->gps_raw ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="i-opacity_6">
|
||
{$image->map( 308, 200 )}
|
||
<div class="i-font-size_-1 i-margin-top_2">
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->loc_short, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
<div class="i-font-size_-1 i-margin-top_2">
|
||
<div class="i-flex i-justify-content_space-between i-flex-wrap_wrap i-gap_1">
|
||
<div>
|
||
<strong>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_not_being_shown', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
</div>
|
||
<div>
|
||
<button type="button" id="elMapForm" popovertarget="elMapForm_menu">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-caret-down"></i></button>
|
||
<i-dropdown popover id="elMapForm_menu">
|
||
<div class="iDropdown">
|
||
<div class="i-padding_3">
|
||
{$image->enableMapForm()}
|
||
</div>
|
||
</div>
|
||
</i-dropdown>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="ipsHr">
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "container:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div data-ips-hook="container">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "container:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<h2 class="ipsTitle ipsTitle--h6 i-color_soft">
|
||
IPSCONTENT;
|
||
|
||
if ( $image->directContainer() instanceof \IPS\gallery\Album ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_category', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
</h2>
|
||
<h3 class="ipsTitle ipsTitle--h4 i-display_inline-block"><a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->directContainer()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->directContainer()->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</a></h3>
|
||
<span class="i-color_soft">·
|
||
IPSCONTENT;
|
||
|
||
$pluralize = array( $image->directContainer()->count_imgs ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_images', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "container:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "container:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<hr class="ipsHr">
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \is_countable($image->metadata) AND \count($image->metadata) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "exif:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="cGalleryExif" data-ips-hook="exif">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "exif:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.FocalLength'] ) || ( isset( $image->metadata['IFD0.Make'] ) AND isset( $image->metadata['IFD0.Model'] ) ) || isset( $image->metadata['EXIF.ShutterSpeedValue'] ) || isset( $image->metadata['COMPUTED.ApertureFNumber'] ) || isset( $image->metadata['Exif.Photo.ISOSpeed'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<h3 class="ipsTitle ipsTitle--h4 ipsTitle--margin">
|
||
IPSCONTENT;
|
||
|
||
$sprintf = array($image->caption); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_metadata', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||
$return .= <<<IPSCONTENT
|
||
</h3>
|
||
<ul class="ipsList ipsList--border ipsList--label-value">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['IFD0.Make'] ) AND isset( $image->metadata['IFD0.Model'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<i class="fa-solid fa-camera-retro" aria-hidden="true"></i>
|
||
<strong class="ipsList__label">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_exif_camera', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class="ipsList__value">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['IFD0.Make'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['IFD0.Model'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.FocalLength'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<i class="fa-solid fa-arrows-left-right"></i>
|
||
<strong class="ipsList__label">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'EXIF.FocalLength', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class="ipsList__value">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->focallength, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.ExposureTime'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<i class="fa-regular fa-clock"></i>
|
||
<strong class="ipsList__label">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'EXIF.ExposureTime', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class="ipsList__value">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['EXIF.ExposureTime'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['COMPUTED.ApertureFNumber'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<i class="fa-solid fa-expand"></i>
|
||
<strong class="ipsList__label">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'COMPUTED.ApertureFNumber', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class="ipsList__value">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['COMPUTED.ApertureFNumber'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['Exif.Photo.ISOSpeed'] ) || isset( $image->metadata['EXIF.ISOSpeedRatings'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<i class="fa-solid fa-camera" aria-hidden="true"></i>
|
||
<strong class="ipsList__label">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_exif_isospeed', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class="ipsList__value">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['Exit.Photo.ISOSpeed'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['Exif.Photo.ISOSpeed'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \is_array( $image->metadata['EXIF.ISOSpeedRatings'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( implode( '/', $image->metadata['EXIF.ISOSpeedRatings'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['EXIF.ISOSpeedRatings'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
<div class="i-text-align_center i-margin-top_3">
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'metadata' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipsdialog data-ipsdialog-size="narrow" data-ipsdialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--inherit">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="i-text-align_center i-margin-top_3">
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'metadata' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipsdialog data-ipsdialog-size="narrow" data-ipsdialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--inherit">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "exif:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "exif:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "imageStats:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageInfo", "imageStats:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ipsBox ipsBox--padding ipsPull ipsResponsive_showPhone">
|
||
<div class="ipsPageActions">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->shareLinks() ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "sharelinks", "core" )->shareButton( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->follow( 'gallery', 'image', $image->id, $image->followersCount() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageLightbox( $image, $commentsAndReviews=FALSE ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div data-controller='gallery.front.view.image' class='cGalleryLightbox' data-role='lightbox'>
|
||
<div class='cGalleryLightbox_inner' data-role="imageSizer">
|
||
<div class='elGalleryHeader' class='cGalleryLightbox_image'>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", "gallery" )->imageLightboxFrame( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
<div class='cGalleryLightbox_info i-background_1'>
|
||
<section data-role='imageInfo'>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "view", \IPS\Request::i()->app )->imageLightboxInfo( $image, $commentsAndReviews );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</section>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageLightboxFrame( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div id="elGalleryImageLightbox" class="elGalleryImage" data-role="imageFrame" data-setheight
|
||
IPSCONTENT;
|
||
|
||
if ( $image->data ):
|
||
$return .= <<<IPSCONTENT
|
||
data-imagesizes="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->data, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "videoContainer:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="cGallery_videoContainer" data-ips-hook="videoContainer">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "videoContainer:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<video data-controller="core.global.core.embeddedvideo" id="elGalleryVideo" data-role="video" data-imageid="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
data-editable
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
controls preload="auto" width="100%" height="100%"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->masked_file_name ):
|
||
$return .= <<<IPSCONTENT
|
||
poster="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
<source src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->original_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" type="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->file_type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"></source>
|
||
<embed wmode="opaque" autoplay="true" showcontrols="true" showstatusbar="true" showtracker="true" src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->original_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" width="480" height="360" type="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->file_type, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"></embed>
|
||
</video>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "videoContainer:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "videoContainer:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "imageContainer:before", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
<div class="cGalleryViewImage" data-role="notesWrapper" data-controller="gallery.front.view.notes" data-imageid="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
data-editable
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-notesdata="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->_notes_json, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ips-hook="imageContainer">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "imageContainer:inside-start", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
<img src="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" alt="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-role="theImage" class="ipsHide">
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->_notes ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<noscript>
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->_notes as $note ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="cGalleryNote" style="left:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['LEFT'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; top:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['TOP'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; width:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['WIDTH'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%; height:
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['HEIGHT'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
%">
|
||
<div class="cGalleryNote_border"></div>
|
||
<div class="cGalleryNote_note"><div>
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $note['NOTE'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</div></div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</noscript>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "imageContainer:inside-end", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "gallery/front/view/imageLightboxFrame", "imageContainer:after", [ $image ] );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class="cGalleryImageFade">
|
||
<div class="cGalleryImageTopBar">
|
||
<div class="cGalleryImageTitle">
|
||
<h1 class="ipsTitle ipsTitle--h3">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->prefix() OR ( $image->canEdit() AND $image::canTag( NULL, $image->container() ) AND $image::canPrefix( NULL, $image->container() ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span
|
||
IPSCONTENT;
|
||
|
||
if ( !$image->prefix() ):
|
||
$return .= <<<IPSCONTENT
|
||
class="ipsHide"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( ( $image->canEdit() AND $image::canTag( NULL, $image->container() ) AND $image::canPrefix( NULL, $image->container() ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
data-editableprefix
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->prefix( $image->prefix( TRUE ), $image->prefix() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->badges() as $badge ):
|
||
$return .= <<<IPSCONTENT
|
||
{$badge}
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span class="" data-controller="core.front.core.moderation">
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-lock"></i>
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-role="editableTitle" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'click_hold_edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<span class="">
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-lock"></i>
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</h1>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->album_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsType_desc ipsTruncate_1">
|
||
<strong class="ipsMinorTitle">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong> <em><a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->directContainer()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->directContainer()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</a></em>
|
||
(
|
||
IPSCONTENT;
|
||
|
||
$pluralize = array( $image->directContainer()->count_imgs ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_images', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||
$return .= <<<IPSCONTENT
|
||
)
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
<ul class="cGalleryControls ipsList ipsList--inline">
|
||
<li>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->promote( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
<li>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->follow( 'gallery', 'image', $image->id, $image->followersCount() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$image->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_fullsize_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--icon ipsButton--text ipsButton--small ipsButton--soft" data-ipstooltip target="_blank" rel="noopener" data-role="toggleFullscreen"></a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="cGalleryImageBottomBar">
|
||
<div class="cGalleryCreditInfo">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->copyright ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
©
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->copyright, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->credit_info ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
<strong>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_credit_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->credit_info, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->shareLinks() ) OR $image->canEdit() OR $image->canDownloadOriginal() OR \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<ul class="ipsList ipsList--inline">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() OR $image->canDownloadOriginal() OR \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<button type="button" id="elImageToolsLightbox" popovertarget="elImageToolsLightbox_menu" class="ipsButton ipsButton--text ipsButton--small cGalleryViewImage_controls">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_tools', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-caret-down"></i></button>
|
||
<i-dropdown popover id="elImageToolsLightbox_menu">
|
||
<div class="iDropdown">
|
||
<ul class="iDropdown__items">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li class="ipsResponsive_hidePhone">
|
||
<button type="button" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_image_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="addNote"><i class="fa-solid fa-pen-to-square"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_image_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</button>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$image->media ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr class="ipsResponsive_hidePhone"></li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'right' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_right', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="rotateImage">
|
||
<i class="fa-solid fa-rotate-right"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_right', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'rotate' )->csrf()->setQueryString( 'direction', 'left' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_left', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="rotateImage">
|
||
<i class="fa-solid fa-rotate-left"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'rotate_left', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->member_id ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canSetAsAlbumCover() OR $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canSetAsAlbumCover() AND $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_category_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_album_only', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'both')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_both', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->canSetAsCategoryCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'category')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_category', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->canSetAsAlbumCover() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a data-action="setAsCover" href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( 'do', 'cover' )->setQueryString( 'set', 'album')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-images"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'cover_album', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr></li>
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('setAsPhoto')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="setAsProfile" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-circle-user"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('setAsPhoto')->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="setAsProfile"><i class="fa-solid fa-circle-user"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'set_gallery_image_photo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canDownloadOriginal() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('download'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"><i class="fa-solid fa-download"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
</i-dropdown>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->shareLinks() ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<button type="button" id="elImageLightboxShare" popovertarget="elImageLightboxShare_menu" class="ipsButton ipsButton--text ipsButton--small"><i class="fa-solid fa-share-nodes"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_share', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class="fa-solid fa-caret-down"></i></button>
|
||
<i-dropdown popover id="elImageLightboxShare_menu">
|
||
<div class="iDropdown">
|
||
<div class="i-padding_3">
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharelinks( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
</i-dropdown>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<span class="elGalleryImageNav">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hasPreviousOrNext() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( [ 'browse' => 1, 'do' => 'previous' ] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="elGalleryImageNav_prev" data-action="changeImage"><i class="fa-solid fa-angle-left"></i></a>
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( [ 'browse' => 1, 'do' => 'next' ] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="elGalleryImageNav_next" data-action="changeImage"><i class="fa-solid fa-angle-right"></i></a>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</span>
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function imageLightboxInfo( $image, $commentsAndReviews ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div data-role='imageDescription'
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hidden() === -1 ):
|
||
$return .= <<<IPSCONTENT
|
||
class='ipsModerated'
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->contentItemMessages( $image->getMessages(), $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hidden() === 1 and $image->canUnhide() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class="ipsModerated i-padding_3">
|
||
<p><i class='fa-solid fa-triangle-exclamation'></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_pending_approval', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
<br>
|
||
<ul class='ipsList ipsList--inline'>
|
||
<li><a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsButton ipsButton--small ipsButton--positive" title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'><i class="fa-solid fa-check-circle"></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canDelete() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-confirm title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
' class="ipsButton ipsButton--small ipsButton--negative"><i class='fa-solid fa-xmark'></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class='ipsPhotoPanel ipsPhotoPanel--mini i-background_2 i-padding_3'>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $image->author(), 'mini', $image->warningRef() );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
<p class='ipsTitle ipsTitle--h3'>
|
||
{$image->author()->link( $image->warningRef() )}
|
||
</p>
|
||
<ul class='ipsList ipsList--inline i-link-color_inherit i-color_soft'>
|
||
<li>
|
||
IPSCONTENT;
|
||
|
||
$val = ( $image->date instanceof \IPS\DateTime ) ? $image->date : \IPS\DateTime::ts( $image->date );$return .= $val->html(useTitle: true);
|
||
$return .= <<<IPSCONTENT
|
||
</li>
|
||
<li>
|
||
IPSCONTENT;
|
||
|
||
$pluralize = array( $image->views ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_views_with_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||
$return .= <<<IPSCONTENT
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canReportOrRevoke() === TRUE ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url('report'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
'
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->member_id or \IPS\Helpers\Form\Captcha::supportsModal() ):
|
||
$return .= <<<IPSCONTENT
|
||
data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'report_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'report_submit_success', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
"
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'report_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'report_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( ( $image->canEdit() or $image->canFeature() or $image->canPin() or $image->canHide() or $image->canUnhide() or $image->canMove() or $image->canLock() or $image->canUnlock() or $image->canDelete() or $image->canChangeAuthor() ) or ( $image->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div>
|
||
<button type="button" id="elImageLightboxActions" popovertarget="elImageLightboxActions_menu" class='ipsButton ipsButton--inherit ipsButton--small ipsButton--icon' title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'manage_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsTooltip><i class='fa-solid fa-gear i-font-size_2'></i> <i class='fa-solid fa-caret-down'></i></button>
|
||
<i-dropdown popover id="elImageLightboxActions_menu">
|
||
<div class="iDropdown">
|
||
<ul class="iDropdown__items">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $image->hidden() == -2 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-confirm data-confirmSubMessage='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'restore_as_visible_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'restore_as_visible', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-confirm data-confirmSubMessage='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'restore_as_hidden_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'restore_as_hidden', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-confirm data-confirmSubMessage='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_immediately_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_immediately', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canChangeAuthor() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'changeAuthor' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_author', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_author_ititle', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'change_author', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'edit' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_edit_details_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipsDialog data-action="editImage">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_edit_details', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canPin() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pin_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pin', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canUnpin() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unpin_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unpin', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canHide() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" data-ipsDialog data-ipsDialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canUnhide() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hidden() === 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unhide_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hidden() === 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'approve', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unhide', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canLock() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'lock_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'lock', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canUnlock() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unlock_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'unlock', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canMove() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'move' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'move', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
" title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_move_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'move', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canDelete() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-confirm title="
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete_title_image', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'delete', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canOnMessage( 'add' ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'messageForm' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_message', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_message', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->modPermission('can_view_moderation_log') ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li><hr></li>
|
||
<li><a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'do' => 'modLog' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderation_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderation_history', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a></li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
</div>
|
||
</i-dropdown>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
<div class='i-padding_3'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->directContainer()->allow_rating ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='i-margin-bottom_2'>{$image->rating('small')}</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->tags() ) OR ( $image->canEdit() AND $image::canTag( NULL, $image->container() ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class=''>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->tags( $image->tags(), FALSE, FALSE, ( $image->canEdit() AND ( \count( $image->tags() ) OR $image::canTag( NULL, $image->container() ) ) ) ? $image->url() : NULL );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->description ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsRichText i-margin-block_2' data-controller="core.front.core.lightboxedImages" data-ipsTruncate>
|
||
{$image->content()}
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\IPS::classUsesTrait( $image, 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reputation( $image );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\core\Advertisement::loadByLocation( 'ad_image_lightbox' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class='cGalleryExif i-background_2 i-padding_3'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count($image->metadata) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.FocalLength'] ) || ( isset( $image->metadata['IFD0.Make'] ) AND isset( $image->metadata['IFD0.Model'] ) ) || isset( $image->metadata['EXIF.ShutterSpeedValue'] ) || isset( $image->metadata['COMPUTED.ApertureFNumber'] ) || isset( $image->metadata['Exif.Photo.ISOSpeed'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<h3 class='i-font-size_-2'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['IFD0.Make'] ) AND isset( $image->metadata['IFD0.Model'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<strong>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_exif_camera', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( mb_strpos( $image->metadata['IFD0.Model'], $image->metadata['IFD0.Make'] ) !== 0 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['IFD0.Make'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['IFD0.Model'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<strong>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'camera_information', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</h3>
|
||
<ul class='ipsList ipsList--inline cGalleryExif_data'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.FocalLength'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li data-ipsTooltip title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'EXIF.FocalLength', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
<span><i class='fa-solid fa-arrows-left-right'></i></span>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->focallength, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['EXIF.ExposureTime'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li data-ipsTooltip title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'EXIF.ExposureTime', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
<span><i class='fa-regular fa-clock'></i></span>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['EXIF.ExposureTime'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['COMPUTED.ApertureFNumber'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li data-ipsTooltip title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'COMPUTED.ApertureFNumber', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
<span class='cGalleryExif_f'>f</span>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['COMPUTED.ApertureFNumber'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['Exif.Photo.ISOSpeed'] ) || isset( $image->metadata['EXIF.ISOSpeedRatings'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li data-ipsTooltip title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_exif_isospeed', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
'>
|
||
<span class='cGalleryExif_iso'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_exif_iso', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( isset( $image->metadata['Exit.Photo.ISOSpeed'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['Exif.Photo.ISOSpeed'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \is_array( $image->metadata['EXIF.ISOSpeedRatings'] ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( implode( '/', $image->metadata['EXIF.ISOSpeedRatings'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->metadata['EXIF.ISOSpeedRatings'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ul>
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'metadata' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-fixed="true" data-ipsDialog-title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
' class='i-font-size_-2'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url( 'metadata' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' data-ipsDialog data-ipsDialog-fixed="true" data-ipsDialog-title='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
' class='i-font-size_-2'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_photo_info', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\GeoLocation::enabled() AND $image->gps_show ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='i-margin-top_2'>
|
||
{$image->map( 400, 100 )}
|
||
<div class='i-font-size_-2 i-margin-top_2'>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->loc_short, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->canEdit() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<button type="button" id="elMapLightboxForm" popovertarget="elMapLightboxForm_menu">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class='fa-solid fa-caret-down'></i></button>
|
||
<i-dropdown popover id="elMapLightboxForm_menu">
|
||
<div class="iDropdown">
|
||
<div class='i-padding_3'>
|
||
{$image->enableMapForm( TRUE )}
|
||
</div>
|
||
</div>
|
||
</i-dropdown>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->canEdit() AND \IPS\GeoLocation::enabled() AND $image->gps_raw ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='i-margin-top_2'>
|
||
<div class='i-opacity_4'>
|
||
{$image->map( 400, 100 )}
|
||
<div class='i-font-size_-2 i-margin-top_2'>
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->loc_short, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
<div class='i-font-size_-2 i-margin-top_3'>
|
||
<strong>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_not_being_shown', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<button type="button" id="elMapLightboxForm" popovertarget="elMapLightboxForm_menu">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'map_privacy', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
<i class='fa-solid fa-caret-down'></i></button>
|
||
<i-dropdown popover id="elMapLightboxForm_menu">
|
||
<div class="iDropdown">
|
||
<div class='i-padding_3'>
|
||
{$image->enableMapForm( TRUE )}
|
||
</div>
|
||
</div>
|
||
</i-dropdown>
|
||
</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
|
||
<div data-role='imageComments' data-commentsContainer="lightbox">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $commentsAndReviews ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( ( $image->directContainer()->allow_reviews && $image->container()->allow_reviews ) && ( $image->directContainer()->allow_comments && $image->container()->allow_comments ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<a id="replies"></a>
|
||
<h2 class='ipsHide'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'user_feedback', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</h2>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$commentsAndReviews}
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function metadata( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->pageHeader( \IPS\Member::loggedIn()->language()->addToStack('gallery_metadata', FALSE, array( 'sprintf' => array( $image->caption ) ) ) );
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='i-padding_2'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->metadata ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<ol class='ipsList ipsList--border ipsList--label-value'>
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->metadata as $key => $value ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !\is_array( $value ) AND ( $image->gps_show OR mb_strpos( $key, 'GPS.' ) === FALSE ) AND ( mb_strpos( $key, 'UndefinedTag' ) === FALSE OR \IPS\Member::loggedIn()->language()->checkKeyExists( $key ) ) AND ( !\IPS\Member::loggedIn()->language()->checkKeyExists( $key ) OR ( \IPS\Member::loggedIn()->language()->checkKeyExists( $key ) AND \IPS\Member::loggedIn()->language()->get( $key ) ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<li>
|
||
<strong class='ipsList__label'>
|
||
IPSCONTENT;
|
||
|
||
$val = "{$key}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
<span class='ipsList__value'>
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->language()->checkKeyExists( $key . '_map_' . $value ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
$val = "{$key}_map_{$value}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $value, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
</span>
|
||
</li>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</ol>
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<p class='ipsEmptyMessage'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'gallery_no_metadata', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function reviews( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div data-controller='core.front.core.commentFeed'
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Settings::i()->auto_polling_enabled ):
|
||
$return .= <<<IPSCONTENT
|
||
data-autoPoll
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-commentsType='reviews' data-baseURL='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
'
|
||
IPSCONTENT;
|
||
|
||
if ( $image->isLastPage('reviews') ):
|
||
$return .= <<<IPSCONTENT
|
||
data-lastPage
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
data-feedID='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->reviewFeedId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' id='reviews' class="ipsEntries ipsEntries--reviews ipsEntries--gallery-reviews" data-follow-area-id="image-
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \count( $image->reviews( NULL, NULL, NULL, 'desc', NULL, NULL, NULL, NULL, isset( \IPS\Widget\Request::i()->showDeleted ) ) ) ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class='ipsButtonBar ipsButtonBar--top'>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->reviewPageCount() > 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsButtonBar__pagination'>{$image->reviewPagination( array( 'tab', 'sort' ) )}</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsButtonBar__end'>
|
||
<ul class="ipsDataFilters">
|
||
<li data-action="tableFilter">
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'tab' => 'reviews', 'sort' => 'helpful' ) )->setPage('page',1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsDataFilters__button
|
||
IPSCONTENT;
|
||
|
||
if ( !isset( \IPS\Widget\Request::i()->sort ) or \IPS\Widget\Request::i()->sort != 'newest' ):
|
||
$return .= <<<IPSCONTENT
|
||
ipsDataFilters__button--active
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="filterClick">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'most_helpful', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
<li data-action="tableFilter">
|
||
<a href="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->setQueryString( array( 'tab' => 'reviews', 'sort' => 'newest' ) )->setPage('page',1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" class="ipsDataFilters__button
|
||
IPSCONTENT;
|
||
|
||
if ( isset( \IPS\Widget\Request::i()->sort ) and \IPS\Widget\Request::i()->sort == 'newest' ):
|
||
$return .= <<<IPSCONTENT
|
||
ipsDataFilters__button--active
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
" data-action="filterClick">
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'newest', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->commentMultimodHeader( $image, '#reviews', 'review' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
|
||
<form action="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url()->csrf()->setQueryString( 'do', 'multimodReview' )->setPage('page',\IPS\Request::i()->page), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" method="post" data-ipsPageAction data-role='moderationTools'>
|
||
|
||
IPSCONTENT;
|
||
|
||
$reviewCount=0; $timeLastRead = $image->timeLastRead(); $lined = FALSE;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
foreach ( $image->reviews( NULL, NULL, NULL, 'desc', NULL, NULL, NULL, NULL, isset( \IPS\Widget\Request::i()->showDeleted ) ) as $review ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $review->mapped('date') ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $lined = TRUE and $reviewCount ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<hr class="ipsUnreadBar">
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$reviewCount++;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$review->html()}
|
||
|
||
IPSCONTENT;
|
||
|
||
endforeach;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->commentMultimod( $image, 'review' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</form>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->reviewPageCount() > 1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsButtonBar ipsButtonBar--bottom'>
|
||
<div class='ipsButtonBar__pagination'>{$image->reviewPagination( array( 'tab', 'sort' ) )}</div>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( !$image->canReview() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<div class='ipsBox__padding'>
|
||
<p class='ipsEmptyMessage' data-role='noReviews'>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_reviews', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</p>
|
||
</div>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
<div class="ipsComposeAreaWrapper">
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->reviewForm() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<strong class='i-color_warning'><i class='fa-solid fa-circle-info'></i>
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'item_locked_can_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||
$return .= <<<IPSCONTENT
|
||
</strong>
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$image->reviewForm()}
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( $image->hasReviewed() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
<!-- Already reviewed -->
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( $image->locked() ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->commentUnavailable( 'item_locked_cannot_review' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( \IPS\Member::loggedin()->restrict_post ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
if ( \IPS\Member::loggedIn()->restrict_post == -1 ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->reviewUnavailable( 'restricted_cannot_comment' );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
else:
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->reviewUnavailable( 'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
elseif ( \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] ):
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\Theme::i()->getTemplate( "forms", "gallery", 'front' )->reviewUnavailable( 'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE ) );
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
|
||
IPSCONTENT;
|
||
|
||
endif;
|
||
$return .= <<<IPSCONTENT
|
||
|
||
</div>
|
||
</div>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}
|
||
|
||
function rssContent( $image ) {
|
||
$return = '';
|
||
$return .= <<<IPSCONTENT
|
||
|
||
{$image->description}
|
||
<p>
|
||
<a href='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
' title='
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
'><img src='
|
||
IPSCONTENT;
|
||
|
||
$return .= \IPS\File::get( "gallery_Images", $image->masked_file_name )->url;
|
||
$return .= <<<IPSCONTENT
|
||
' title="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
" alt="
|
||
IPSCONTENT;
|
||
$return .= \IPS\Theme\Template::htmlspecialchars( $image->caption, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||
$return .= <<<IPSCONTENT
|
||
"></a>
|
||
</p>
|
||
IPSCONTENT;
|
||
|
||
return $return;
|
||
}} |