289 lines
11 KiB
PHP
289 lines
11 KiB
PHP
<?php
|
|
/*
|
|
* @package Joomla
|
|
* @copyright Copyright (C) Open Source Matters. All rights reserved.
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
|
* @component Phoca Gallery
|
|
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
|
|
*/
|
|
defined( '_JEXEC' ) or die();
|
|
|
|
use Joomla\CMS\Layout\FileLayout;
|
|
use Joomla\CMS\MVC\View\HtmlView;
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Component\ComponentHelper;
|
|
use Joomla\CMS\Object\CMSObject;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Toolbar\Toolbar;
|
|
use Joomla\CMS\Toolbar\ToolbarHelper;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
use Joomla\CMS\Filesystem\File;
|
|
jimport( 'joomla.application.component.view' );
|
|
phocagalleryimport('phocagallery.library.library');
|
|
phocagalleryimport('phocagallery.render.renderdetailwindow');
|
|
|
|
|
|
class PhocaGalleryCpViewPhocaGalleryImgs extends HtmlView
|
|
{
|
|
|
|
protected $items;
|
|
protected $items_thumbnail;
|
|
protected $pagination;
|
|
protected $state;
|
|
protected $button;
|
|
protected $t;
|
|
protected $r;
|
|
public $filterForm;
|
|
public $activeFilters;
|
|
//public $_context = 'com_phocagallery.phocagalleryimg';
|
|
|
|
function display($tpl = null) {
|
|
|
|
|
|
$this->items = $this->get('Items');
|
|
$this->pagination = $this->get('Pagination');
|
|
$this->state = $this->get('State');
|
|
$this->filterForm = $this->get('FilterForm');
|
|
$this->activeFilters = $this->get('ActiveFilters');
|
|
|
|
$this->r = new PhocaGalleryRenderAdminViews();
|
|
$this->t = PhocaGalleryUtils::setVars('img');
|
|
|
|
// Preprocess the list of items to find ordering divisions.
|
|
foreach ($this->items as &$item) {
|
|
$this->ordering[$item->catid][] = $item->id;
|
|
}
|
|
|
|
|
|
$this->processImages();
|
|
|
|
|
|
|
|
$document = Factory::getDocument();
|
|
|
|
|
|
|
|
$params = ComponentHelper::getParams('com_phocagallery');
|
|
|
|
|
|
$this->t['enablethumbcreation'] = $params->get('enable_thumb_creation', 1 );
|
|
$this->t['enablethumbcreationstatus'] = PhocaGalleryRenderAdmin::renderThumbnailCreationStatus((int)$this->t['enablethumbcreation']);
|
|
|
|
|
|
|
|
/*$app = JFactory::getApplication();
|
|
$uri = \Joomla\CMS\Uri\Uri::getInstance();
|
|
|
|
$db = JFactory::getDBO();*/
|
|
|
|
$this->t['notapproved'] = $this->get( 'NotApprovedImage' );
|
|
|
|
// Button
|
|
/*
|
|
$this->button = new CMSObject();
|
|
$this->button->set('modal', true);
|
|
$this->button->set('methodname', 'modal-button');
|
|
//$this->button->set('link', $link);
|
|
$this->button->set('text', Text::_('COM_PHOCAGALLERY_DISPLAY_IMAGE_DETAIL'));
|
|
//$this->button->set('name', 'image');
|
|
$this->button->set('modalname', 'modal_phocagalleryimgs');
|
|
$this->button->set('options', "{handler: 'image', size: {x: 200, y: 150}}");*/
|
|
|
|
|
|
$library = PhocaGalleryLibrary::getLibrary();
|
|
$libraries = array();
|
|
$btn = new PhocaGalleryRenderDetailWindow();
|
|
$btn->popupWidth = '640';
|
|
$btn->popupHeight = '480';
|
|
$btn->backend = 1;
|
|
|
|
$btn->setButtons(14, $libraries, $library);
|
|
$this->button = $btn->getB1();
|
|
|
|
|
|
$this->addToolbar();
|
|
parent::display($tpl);
|
|
}
|
|
|
|
|
|
|
|
protected function addToolbar() {
|
|
|
|
require_once JPATH_COMPONENT.'/helpers/phocagalleryimgs.php';
|
|
|
|
|
|
|
|
$state = $this->get('State');
|
|
$canDo = PhocaGalleryImgsHelper::getActions($state->get('filter.image_id'));
|
|
$user = Factory::getUser();
|
|
$bar = Toolbar::getInstance('toolbar');
|
|
ToolbarHelper::title( Text::_('COM_PHOCAGALLERY_IMAGES'), 'image.png' );
|
|
if ($canDo->get('core.create')) {
|
|
ToolbarHelper::addNew( 'phocagalleryimg.add','JToolbar_NEW');
|
|
ToolbarHelper::custom( 'phocagallerym.edit', 'multiple.png', '', 'COM_PHOCAGALLERY_MULTIPLE_ADD' , false);
|
|
}
|
|
if ($canDo->get('core.edit')) {
|
|
ToolbarHelper::editList('phocagalleryimg.edit','JToolbar_EDIT');
|
|
}
|
|
|
|
$dropdown = $bar->dropdownButton('status-group')->text('JTOOLBAR_CHANGE_STATUS')->toggleSplit(false)->icon('icon-ellipsis-h')->buttonClass('btn btn-action')->listCheck(true);
|
|
$childBar = $dropdown->getChildToolbar();
|
|
|
|
if ($canDo->get('core.create')) {
|
|
|
|
/*
|
|
$bar->appendButton( 'Custom', '<a href="#" onclick="javascript:if(document.adminForm.boxchecked.value==0){alert(\''.JText::_('COM_PHOCAGALLERY_WARNING_RECREATE_MAKE_SELECTION').'\');}else{if(confirm(\''.JText::_('COM_PHOCAGALLERY_WARNING_RECREATE_THUMBNAILS').'\')){Joomla.submitbutton(\'phocagalleryimg.recreate\');}}" class="toolbar"><span class="icon-32-recreate" title="'.JText::_('COM_PHOCAGALLERY_RECREATE_THUMBS').'" type="Custom"></span>'.JText::_('COM_PHOCAGALLERY_RECREATE').'</a>');*/
|
|
|
|
/* $dhtml = '<joomla-toolbar-button id="toolbar-recreate-thumbnails" list-selection>';
|
|
$dhtml .= '<button class="btn btn-small" onclick="javascript:if(document.adminForm.boxchecked.value==0){alert(\''.Text::_('COM_PHOCAGALLERY_WARNING_RECREATE_MAKE_SELECTION').'\');}else{if(confirm(\''.Text::_('COM_PHOCAGALLERY_WARNING_RECREATE_THUMBNAILS').'\')){Joomla.submitbutton(\'phocagalleryimg.recreate\');}}" ><i class="icon-recreate" title="'.Text::_('COM_PHOCAGALLERY_RECREATE_THUMBS').'"></i> '.Text::_('COM_PHOCAGALLERY_RECREATE_THUMBS').'</button>';
|
|
$dhtml .= '</joomla-toolbar-button>';
|
|
$bar->appendButton('Custom', $dhtml);*/
|
|
|
|
$onClick = 'javascript:if(document.adminForm.boxchecked.value==0){alert(\''.Text::_('COM_PHOCAGALLERY_WARNING_RECREATE_MAKE_SELECTION').'\');}else{if(confirm(\''.Text::_('COM_PHOCAGALLERY_WARNING_RECREATE_THUMBNAILS').'\')){Joomla.submitbutton(\'phocagalleryimg.recreate\');}}';
|
|
|
|
$childBar->standardButton('recreate')->text('COM_PHOCAGALLERY_RECREATE_THUMBS')->onclick($onClick)->icon('icon-image');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($canDo->get('core.edit.state')) {
|
|
|
|
//ToolbarHelper::divider();
|
|
/*ToolbarHelper::custom('phocagalleryimgs.publish', 'publish.png', 'publish_f2.png','JToolbar_PUBLISH', true);
|
|
ToolbarHelper::custom('phocagalleryimgs.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JToolbar_UNPUBLISH', true);
|
|
ToolbarHelper::custom( 'phocagalleryimgs.approve', 'approve.png', '', 'COM_PHOCAGALLERY_APPROVE' , true);
|
|
ToolbarHelper::custom( 'phocagalleryimgs.disapprove', 'disapprove.png', '', 'COM_PHOCAGALLERY_NOT_APPROVE' , true);
|
|
*/
|
|
$childBar->publish('phocagalleryimgs.publish')->listCheck(true);
|
|
$childBar->unpublish('phocagalleryimgs.unpublish')->listCheck(true);
|
|
$childBar->standardButton('approve')->text('COM_PHOCAGALLERY_APPROVE')->task('phocagalleryimgs.approve')->listCheck(true);
|
|
$childBar->standardButton('disapprove')->text('COM_PHOCAGALLERY_NOT_APPROVE')->task('phocagalleryimgs.disapprove')->listCheck(true);
|
|
|
|
}
|
|
|
|
if ($canDo->get('core.delete')) {
|
|
$childBar->delete($this->t['tasks'].'.delete')->text('COM_PHOCAGALLERY_DELETE')->message('COM_PHOCAGALLERY_WARNING_DELETE_ITEMS')->icon('icon-trash')->listCheck(true);
|
|
//ToolbarHelper::deleteList( Text::_( 'COM_PHOCAGALLERY_WARNING_DELETE_ITEMS' ), 'phocagalleryimgs.delete', 'COM_PHOCAGALLERY_DELETE');
|
|
}
|
|
|
|
// Add a batch button
|
|
if ($user->authorise('core.edit'))
|
|
{
|
|
|
|
//HTMLHelper::_('bootstrap.renderModal', 'collapseModal');
|
|
/*$title = Text::_('JToolbar_BATCH');
|
|
$dhtml = '<joomla-toolbar-button id="toolbar-batch" list-selection>';
|
|
$dhtml .= "<button data-bs-toggle=\"modal\" data-bs-target=\"#collapseModal\" class=\"btn btn-small\">
|
|
<i class=\"icon-checkbox-partial\" title=\"$title\"></i>
|
|
$title</button>";
|
|
$dhtml .= '</joomla-toolbar-button>';
|
|
|
|
$bar->appendButton('Custom', $dhtml, 'batch');*/
|
|
|
|
HTMLHelper::_('bootstrap.renderModal', 'collapseModal');
|
|
$childBar->popupButton('batch')->text('JTOOLBAR_BATCH')->selector('collapseModal')->listCheck(true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
ToolbarHelper::divider();
|
|
ToolbarHelper::help( 'screen.phocagallery', true );
|
|
}
|
|
|
|
|
|
protected function processImages() {
|
|
|
|
if (!empty($this->items)) {
|
|
|
|
$params = ComponentHelper::getParams( 'com_phocagallery' );
|
|
$pagination_thumbnail_creation = $params->get( 'pagination_thumbnail_creation', 0 );
|
|
$clean_thumbnails = $params->get( 'clean_thumbnails', 0 );
|
|
|
|
|
|
//Server doesn't have CPU power
|
|
//we do thumbnail for all images - there is no pagination...
|
|
//or we do thumbanil for only listed images
|
|
if (empty($this->items_thumbnail)) {
|
|
if ($pagination_thumbnail_creation == 1) {
|
|
$this->items_thumbnail = $this->items;
|
|
} else {
|
|
$this->items_thumbnail = $this->get('ItemsThumbnail');
|
|
|
|
}
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - -
|
|
// Check if the file stored in database is on the server. If not please refer to user
|
|
// Get filename from every object there is stored in database
|
|
// file - abc.img, file_no - folder/abc.img
|
|
// Get folder variables from Helper
|
|
$path = PhocaGalleryPath::getPath();
|
|
$origPath = $path->image_abs;
|
|
$origPathServer = str_replace('\\', '/', $path->image_abs);
|
|
|
|
//-----------------------------------------
|
|
//Do all thumbnails no limit no pagination
|
|
if (!empty($this->items_thumbnail)) {
|
|
foreach ($this->items_thumbnail as $key => $value) {
|
|
$fileOriginalThumb = PhocaGalleryFile::getFileOriginal($value->filename);
|
|
//Let the user know that the file doesn't exists and delete all thumbnails
|
|
if (File::exists($fileOriginalThumb)) {
|
|
$refreshUrlThumb = 'index.php?option=com_phocagallery&view=phocagalleryimgs';
|
|
$fileThumb = PhocaGalleryFileThumbnail::getOrCreateThumbnail( $value->filename, $refreshUrlThumb, 1, 1, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->items_thumbnail = null; // delete data to reduce memory
|
|
|
|
//Only the the site with limitation or pagination...
|
|
if (!empty($this->items)) {
|
|
foreach ($this->items as $key => $value) {
|
|
$fileOriginal = PhocaGalleryFile::getFileOriginal($value->filename);
|
|
//Let the user know that the file doesn't exists and delete all thumbnails
|
|
|
|
if (!File::exists($fileOriginal)) {
|
|
$this->items[$key]->filename = Text::_( 'COM_PHOCAGALLERY_IMG_FILE_NOT_EXISTS' );
|
|
$this->items[$key]->fileoriginalexist = 0;
|
|
} else {
|
|
//Create thumbnails small, medium, large
|
|
$refresh_url = 'index.php?option=com_phocagallery&view=phocagalleryimgs';
|
|
$fileThumb = PhocaGalleryFileThumbnail::getOrCreateThumbnail($value->filename, $refresh_url, 1, 1, 1);
|
|
|
|
$this->items[$key]->linkthumbnailpath = $fileThumb['thumb_name_s_no_rel'];
|
|
$this->items[$key]->fileoriginalexist = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Clean Thumbs Folder if there are thumbnail files but not original file
|
|
if ($clean_thumbnails == 1) {
|
|
PhocaGalleryFileFolder::cleanThumbsFolder();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected function getSortFields() {
|
|
return array(
|
|
'a.ordering' => Text::_('JGRID_HEADING_ORDERING'),
|
|
'a.title' => Text::_('COM_PHOCAGALLERY_TITLE'),
|
|
'a.filename' => Text::_('COM_PHOCAGALLERY_FILENAME'),
|
|
'a.published' => Text::_('COM_PHOCAGALLERY_PUBLISHED'),
|
|
'a.approved' => Text::_('COM_PHOCAGALLERY_APPROVED'),
|
|
'category_id' => Text::_('COM_PHOCAGALLERY_CATEGORY'),
|
|
'category_owner_id'=> Text::_('COM_PHOCAGALLERY_OWNER'),
|
|
'uploadusername'=> Text::_('COM_PHOCAGALLERY_UPLOADED_BY'),
|
|
'ratingavg' => Text::_('COM_PHOCAGALLERY_RATING'),
|
|
'a.hits' => Text::_('COM_PHOCAGALLERY_HITS'),
|
|
'language' => Text::_('JGRID_HEADING_LANGUAGE'),
|
|
'a.id' => Text::_('JGRID_HEADING_ID')
|
|
);
|
|
}
|
|
}
|
|
?>
|