521 lines
20 KiB
PHP
521 lines
20 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: view.html.php 1983 2013-05-31 13:36:41Z lefteris.kavadas $
|
|
* @package K2
|
|
* @author JoomlaWorks http://www.joomlaworks.net
|
|
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
|
|
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
|
*/
|
|
|
|
// no direct access
|
|
defined('_JEXEC') or die ;
|
|
|
|
jimport('joomla.application.component.view');
|
|
|
|
class K2ViewItem extends K2View
|
|
{
|
|
|
|
function display($tpl = null)
|
|
{
|
|
|
|
$mainframe = JFactory::getApplication();
|
|
$db = JFactory::getDBO();
|
|
$view = JRequest::getCmd('view');
|
|
jimport('joomla.filesystem.file');
|
|
jimport('joomla.html.pane');
|
|
JHTML::_('behavior.keepalive');
|
|
JHTML::_('behavior.modal');
|
|
JRequest::setVar('hidemainmenu', 1);
|
|
$document = JFactory::getDocument();
|
|
$document->addScript(JURI::root(true).'/media/k2/assets/js/nicEdit.js?v=2.6.7');
|
|
//var K2SitePath = '".JURI::root(true)."/';
|
|
$js = "
|
|
var K2BasePath = '".JURI::base(true)."/';
|
|
var K2Language = [
|
|
'".JText::_('K2_REMOVE', true)."',
|
|
'".JText::_('K2_LINK_TITLE_OPTIONAL', true)."',
|
|
'".JText::_('K2_LINK_TITLE_ATTRIBUTE_OPTIONAL', true)."',
|
|
'".JText::_('K2_ARE_YOU_SURE', true)."',
|
|
'".JText::_('K2_YOU_ARE_NOT_ALLOWED_TO_POST_TO_THIS_CATEGORY', true)."',
|
|
'".JText::_('K2_OR_SELECT_A_FILE_ON_THE_SERVER', true)."'
|
|
]
|
|
";
|
|
$document->addScriptDeclaration($js);
|
|
K2Model::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'models');
|
|
$model = K2Model::getInstance('Item', 'K2Model', array('table_path' => JPATH_COMPONENT_ADMINISTRATOR.DS.'tables'));
|
|
$item = $model->getData();
|
|
JFilterOutput::objectHTMLSafe($item, ENT_QUOTES, array('video', 'params', 'plugins'));
|
|
$user = JFactory::getUser();
|
|
|
|
// Permissions check on frontend
|
|
if ($mainframe->isSite())
|
|
{
|
|
JLoader::register('K2HelperPermissions', JPATH_COMPONENT.DS.'helpers'.DS.'permissions.php');
|
|
$task = JRequest::getCmd('task');
|
|
if ($task == 'edit' && !K2HelperPermissions::canEditItem($item->created_by, $item->catid))
|
|
{
|
|
JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
|
|
}
|
|
if ($task == 'add' && !K2HelperPermissions::canAddItem())
|
|
{
|
|
JError::raiseError(403, JText::_('K2_ALERTNOTAUTH'));
|
|
}
|
|
// Get permissions
|
|
$K2Permissions = K2Permissions::getInstance();
|
|
$this->assignRef('permissions', $K2Permissions->permissions);
|
|
}
|
|
|
|
if ($item->isCheckedOut($user->get('id'), $item->checked_out))
|
|
{
|
|
$message = JText::_('K2_THE_ITEM').': '.$item->title.' '.JText::_('K2_IS_CURRENTLY_BEING_EDITED_BY_ANOTHER_ADMINISTRATOR');
|
|
$url = ($mainframe->isSite()) ? 'index.php?option=com_k2&view=item&id='.$item->id.'&tmpl=component' : 'index.php?option=com_k2';
|
|
$mainframe->redirect($url, $message);
|
|
}
|
|
|
|
if ($item->id)
|
|
{
|
|
$item->checkout($user->get('id'));
|
|
}
|
|
else
|
|
{
|
|
$item->published = 1;
|
|
$item->publish_down = $db->getNullDate();
|
|
$item->modified = $db->getNullDate();
|
|
$date = JFactory::getDate();
|
|
$now = K2_JVERSION == '15' ? $date->toMySQL() : $date->toSql();
|
|
$item->created = $now;
|
|
$item->publish_up = $item->created;
|
|
}
|
|
|
|
$lists = array();
|
|
if (version_compare(JVERSION, '1.6.0', 'ge'))
|
|
{
|
|
$dateFormat = JText::_('K2_J16_DATE_FORMAT_CALENDAR');
|
|
}
|
|
else
|
|
{
|
|
$dateFormat = JText::_('K2_DATE_FORMAT_CALENDAR');
|
|
}
|
|
$item->publish_up = JHTML::_('date', $item->publish_up, $dateFormat);
|
|
if ($item->publish_down == $db->getNullDate())
|
|
{
|
|
$item->publish_down = '';
|
|
}
|
|
else
|
|
{
|
|
$item->publish_down = JHTML::_('date', $item->publish_down, $dateFormat);
|
|
}
|
|
|
|
// Set up calendars
|
|
$created = JHTML::_('date', $item->created, $dateFormat);
|
|
$lists['createdCalendar'] = JHTML::_('calendar', $created, 'created', 'created');
|
|
$lists['publish_up'] = JHTML::_('calendar', $item->publish_up, 'publish_up', 'publish_up');
|
|
$lists['publish_down'] = JHTML::_('calendar', $item->publish_down, 'publish_down', 'publish_down');
|
|
|
|
if ($item->id)
|
|
{
|
|
$lists['created'] = JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC2'));
|
|
}
|
|
else
|
|
{
|
|
$lists['created'] = JText::_('K2_NEW_DOCUMENT');
|
|
}
|
|
|
|
if ($item->modified == $db->getNullDate() || !$item->id)
|
|
{
|
|
$lists['modified'] = JText::_('K2_NEVER');
|
|
}
|
|
else
|
|
{
|
|
$lists['modified'] = JHTML::_('date', $item->modified, JText::_('DATE_FORMAT_LC2'));
|
|
}
|
|
|
|
$params = JComponentHelper::getParams('com_k2');
|
|
$wysiwyg = JFactory::getEditor();
|
|
$onSave = '';
|
|
if ($params->get("mergeEditors"))
|
|
{
|
|
|
|
if (JString::strlen($item->fulltext) > 1)
|
|
{
|
|
$textValue = $item->introtext."<hr id=\"system-readmore\" />".$item->fulltext;
|
|
}
|
|
else
|
|
{
|
|
$textValue = $item->introtext;
|
|
}
|
|
$text = $wysiwyg->display('text', $textValue, '100%', '400px', '', '');
|
|
$this->assignRef('text', $text);
|
|
if(K2_JVERSION == '30')
|
|
{
|
|
$onSave = $wysiwyg->save('text');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$introtext = $wysiwyg->display('introtext', $item->introtext, '100%', '400px', '', '', array('readmore'));
|
|
$this->assignRef('introtext', $introtext);
|
|
$fulltext = $wysiwyg->display('fulltext', $item->fulltext, '100%', '400px', '', '', array('readmore'));
|
|
$this->assignRef('fulltext', $fulltext);
|
|
if(K2_JVERSION == '30')
|
|
{
|
|
$onSave = $wysiwyg->save('introtext');
|
|
$onSave .= $wysiwyg->save('fulltext');
|
|
}
|
|
}
|
|
|
|
$document->addScriptDeclaration("function onK2EditorSave(){ ".$onSave." }");
|
|
|
|
$lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $item->published);
|
|
$lists['featured'] = JHTML::_('select.booleanlist', 'featured', 'class="inputbox"', $item->featured);
|
|
$lists['access'] = version_compare(JVERSION, '3.0', 'ge') ? JHTML::_('access.level', 'access', $item->access) : JHTML::_('list.accesslevel', $item);
|
|
|
|
$query = "SELECT ordering AS value, title AS text FROM #__k2_items WHERE catid={$item->catid}";
|
|
$lists['ordering'] = version_compare(JVERSION, '3.0', 'ge') ? NUll : JHTML::_('list.specificordering', $item, $item->id, $query);
|
|
|
|
if (!$item->id)
|
|
$item->catid = $mainframe->getUserStateFromRequest('com_k2itemsfilter_category', 'catid', 0, 'int');
|
|
|
|
require_once JPATH_ADMINISTRATOR.'/components/com_k2/models/categories.php';
|
|
$categoriesModel = K2Model::getInstance('Categories', 'K2Model');
|
|
$categories = $categoriesModel->categoriesTree();
|
|
$lists['catid'] = JHTML::_('select.genericlist', $categories, 'catid', 'class="inputbox"', 'value', 'text', $item->catid);
|
|
|
|
if (version_compare(JVERSION, '1.6.0', 'ge'))
|
|
{
|
|
$languages = JHTML::_('contentlanguage.existing', true, true);
|
|
$lists['language'] = JHTML::_('select.genericlist', $languages, 'language', '', 'value', 'text', $item->language);
|
|
}
|
|
|
|
$lists['checkSIG'] = $model->checkSIG();
|
|
$lists['checkAllVideos'] = $model->checkAllVideos();
|
|
|
|
$remoteVideo = false;
|
|
$providerVideo = false;
|
|
$embedVideo = false;
|
|
|
|
if (stristr($item->video, 'remote}') !== false)
|
|
{
|
|
$remoteVideo = true;
|
|
$options['startOffset'] = 1;
|
|
}
|
|
|
|
$providers = $model->getVideoProviders();
|
|
|
|
if (count($providers))
|
|
{
|
|
|
|
foreach ($providers as $provider)
|
|
{
|
|
$providersOptions[] = JHTML::_('select.option', $provider, ucfirst($provider));
|
|
if (stristr($item->video, "{{$provider}}") !== false)
|
|
{
|
|
$providerVideo = true;
|
|
$options['startOffset'] = 2;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if (JString::substr($item->video, 0, 1) !== '{')
|
|
{
|
|
$embedVideo = true;
|
|
$options['startOffset'] = 3;
|
|
}
|
|
|
|
$lists['uploadedVideo'] = (!$remoteVideo && !$providerVideo && !$embedVideo) ? true : false;
|
|
|
|
if ($lists['uploadedVideo'] || $item->video == '')
|
|
{
|
|
$options['startOffset'] = 0;
|
|
}
|
|
|
|
$document->addScriptDeclaration("var K2ActiveVideoTab = ".$options['startOffset']);
|
|
|
|
$lists['remoteVideo'] = ($remoteVideo) ? preg_replace('%\{[a-z0-9-_]*\}(.*)\{/[a-z0-9-_]*\}%i', '\1', $item->video) : '';
|
|
$lists['remoteVideoType'] = ($remoteVideo) ? preg_replace('%\{([a-z0-9-_]*)\}.*\{/[a-z0-9-_]*\}%i', '\1', $item->video) : '';
|
|
$lists['providerVideo'] = ($providerVideo) ? preg_replace('%\{[a-z0-9-_]*\}(.*)\{/[a-z0-9-_]*\}%i', '\1', $item->video) : '';
|
|
$lists['providerVideoType'] = ($providerVideo) ? preg_replace('%\{([a-z0-9-_]*)\}.*\{/[a-z0-9-_]*\}%i', '\1', $item->video) : '';
|
|
$lists['embedVideo'] = ($embedVideo) ? $item->video : '';
|
|
|
|
if (isset($providersOptions))
|
|
{
|
|
$lists['providers'] = JHTML::_('select.genericlist', $providersOptions, 'videoProvider', '', 'value', 'text', $lists['providerVideoType']);
|
|
}
|
|
|
|
JPluginHelper::importPlugin('content', 'jw_sigpro');
|
|
JPluginHelper::importPlugin('content', 'jw_allvideos');
|
|
|
|
$dispatcher = JDispatcher::getInstance();
|
|
|
|
// Detect gallery type
|
|
if (JString::strpos($item->gallery, 'http://'))
|
|
{
|
|
$item->galleryType = 'flickr';
|
|
$item->galleryValue = JString::substr($item->gallery, 9);
|
|
$item->galleryValue = JString::substr($item->galleryValue, 0, -10);
|
|
}
|
|
else
|
|
{
|
|
$item->galleryType = 'server';
|
|
$item->galleryValue = '';
|
|
}
|
|
|
|
$params->set('galleries_rootfolder', 'media/k2/galleries');
|
|
$params->set('thb_width', '150');
|
|
$params->set('thb_height', '120');
|
|
$params->set('enabledownload', '0');
|
|
$item->text = $item->gallery;
|
|
if (K2_JVERSION == '15')
|
|
{
|
|
$dispatcher->trigger('onPrepareContent', array(&$item, &$params, null));
|
|
}
|
|
else
|
|
{
|
|
$dispatcher->trigger('onContentPrepare', array('com_k2.'.$view, &$item, &$params, null));
|
|
}
|
|
$item->gallery = $item->text;
|
|
|
|
if (!$embedVideo)
|
|
{
|
|
$params->set('vfolder', 'media/k2/videos');
|
|
$params->set('afolder', 'media/k2/audio');
|
|
if (JString::strpos($item->video, 'remote}'))
|
|
{
|
|
preg_match("#}(.*?){/#s", $item->video, $matches);
|
|
if (JString::substr($matches[1], 0, 7) != 'http://')
|
|
$item->video = str_replace($matches[1], JURI::root().$matches[1], $item->video);
|
|
}
|
|
$item->text = $item->video;
|
|
|
|
if (K2_JVERSION == '15')
|
|
{
|
|
$dispatcher->trigger('onPrepareContent', array(&$item, &$params, null));
|
|
}
|
|
else
|
|
{
|
|
$dispatcher->trigger('onContentPrepare', array('com_k2.'.$view, &$item, &$params, null));
|
|
}
|
|
|
|
$item->video = $item->text;
|
|
}
|
|
else
|
|
{
|
|
// no nothing
|
|
}
|
|
|
|
if (isset($item->created_by))
|
|
{
|
|
$author = JUser::getInstance($item->created_by);
|
|
$item->author = $author->name;
|
|
}
|
|
else
|
|
{
|
|
$item->author = $user->name;
|
|
}
|
|
if (isset($item->modified_by))
|
|
{
|
|
$moderator = JUser::getInstance($item->modified_by);
|
|
$item->moderator = $moderator->name;
|
|
}
|
|
|
|
if ($item->id)
|
|
{
|
|
$active = $item->created_by;
|
|
}
|
|
else
|
|
{
|
|
$active = $user->id;
|
|
}
|
|
$lists['authors'] = JHTML::_('list.users', 'created_by', $active, false);
|
|
|
|
$categories_option[] = JHTML::_('select.option', 0, JText::_('K2_SELECT_CATEGORY'));
|
|
$categories = $categoriesModel->categoriesTree(NUll, true, false);
|
|
if ($mainframe->isSite())
|
|
{
|
|
JLoader::register('K2HelperPermissions', JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'permissions.php');
|
|
if (($task == 'add' || $task == 'edit') && !K2HelperPermissions::canAddToAll())
|
|
{
|
|
for ($i = 0; $i < sizeof($categories); $i++)
|
|
{
|
|
if (!K2HelperPermissions::canAddItem($categories[$i]->value) && $task == 'add')
|
|
{
|
|
$categories[$i]->disable = true;
|
|
}
|
|
if (!K2HelperPermissions::canEditItem($item->created_by, $categories[$i]->value) && $task == 'edit')
|
|
{
|
|
$categories[$i]->disable = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$categories_options = @array_merge($categories_option, $categories);
|
|
$lists['categories'] = JHTML::_('select.genericlist', $categories_options, 'catid', '', 'value', 'text', $item->catid);
|
|
|
|
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
|
|
$category = JTable::getInstance('K2Category', 'Table');
|
|
$category->load($item->catid);
|
|
|
|
$extraFieldModel = K2Model::getInstance('ExtraField', 'K2Model');
|
|
if ($category->id)
|
|
{
|
|
$extraFields = $extraFieldModel->getExtraFieldsByGroup($category->extraFieldsGroup);
|
|
}
|
|
else
|
|
{
|
|
$extraFields = NULL;
|
|
}
|
|
|
|
for ($i = 0; $i < sizeof($extraFields); $i++)
|
|
{
|
|
$extraFields[$i]->element = $extraFieldModel->renderExtraField($extraFields[$i], $item->id);
|
|
}
|
|
|
|
if ($item->id)
|
|
{
|
|
$item->attachments = $model->getAttachments($item->id);
|
|
$rating = $model->getRating();
|
|
if (is_null($rating))
|
|
{
|
|
$item->ratingSum = 0;
|
|
$item->ratingCount = 0;
|
|
}
|
|
else
|
|
{
|
|
$item->ratingSum = (int)$rating->rating_sum;
|
|
$item->ratingCount = (int)$rating->rating_count;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$item->attachments = NULL;
|
|
$item->ratingSum = 0;
|
|
$item->ratingCount = 0;
|
|
}
|
|
|
|
if ($user->gid < 24 && $params->get('lockTags'))
|
|
{
|
|
$params->set('taggingSystem', 0);
|
|
}
|
|
|
|
$tags = $model->getAvailableTags($item->id);
|
|
$lists['tags'] = JHTML::_('select.genericlist', $tags, 'tags', 'multiple="multiple" size="10" ', 'id', 'name');
|
|
|
|
if (isset($item->id))
|
|
{
|
|
$item->tags = $model->getCurrentTags($item->id);
|
|
$lists['selectedTags'] = JHTML::_('select.genericlist', $item->tags, 'selectedTags[]', 'multiple="multiple" size="10" ', 'id', 'name');
|
|
}
|
|
else
|
|
{
|
|
$lists['selectedTags'] = '<select size="10" multiple="multiple" id="selectedTags" name="selectedTags[]"></select>';
|
|
}
|
|
|
|
$lists['metadata'] = class_exists('JParameter') ? new JParameter($item->metadata) : new JRegistry($item->metadata);
|
|
|
|
$date = JFactory::getDate($item->modified);
|
|
$timestamp = '?t='.$date->toUnix();
|
|
|
|
if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg'))
|
|
{
|
|
$item->image = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_L.jpg'.$timestamp;
|
|
}
|
|
|
|
if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg'))
|
|
{
|
|
$item->thumb = JURI::root().'media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg'.$timestamp;
|
|
}
|
|
|
|
JPluginHelper::importPlugin('k2');
|
|
$dispatcher = JDispatcher::getInstance();
|
|
|
|
$K2PluginsItemContent = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'content'));
|
|
$this->assignRef('K2PluginsItemContent', $K2PluginsItemContent);
|
|
|
|
$K2PluginsItemImage = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'image'));
|
|
$this->assignRef('K2PluginsItemImage', $K2PluginsItemImage);
|
|
|
|
$K2PluginsItemGallery = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'gallery'));
|
|
$this->assignRef('K2PluginsItemGallery', $K2PluginsItemGallery);
|
|
|
|
$K2PluginsItemVideo = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'video'));
|
|
$this->assignRef('K2PluginsItemVideo', $K2PluginsItemVideo);
|
|
|
|
$K2PluginsItemExtraFields = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'extra-fields'));
|
|
$this->assignRef('K2PluginsItemExtraFields', $K2PluginsItemExtraFields);
|
|
|
|
$K2PluginsItemAttachments = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'attachments'));
|
|
$this->assignRef('K2PluginsItemAttachments', $K2PluginsItemAttachments);
|
|
|
|
$K2PluginsItemOther = $dispatcher->trigger('onRenderAdminForm', array(&$item, 'item', 'other'));
|
|
$this->assignRef('K2PluginsItemOther', $K2PluginsItemOther);
|
|
|
|
if (version_compare(JVERSION, '1.6.0', 'ge'))
|
|
{
|
|
jimport('joomla.form.form');
|
|
$form = JForm::getInstance('itemForm', JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'item.xml');
|
|
$values = array('params' => json_decode($item->params));
|
|
$form->bind($values);
|
|
}
|
|
else
|
|
{
|
|
$form = new JParameter('', JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'item.xml');
|
|
$form->loadINI($item->params);
|
|
}
|
|
$this->assignRef('form', $form);
|
|
|
|
$nullDate = $db->getNullDate();
|
|
$this->assignRef('nullDate', $nullDate);
|
|
|
|
$this->assignRef('extraFields', $extraFields);
|
|
$this->assignRef('options', $options);
|
|
$this->assignRef('row', $item);
|
|
$this->assignRef('lists', $lists);
|
|
$this->assignRef('params', $params);
|
|
$this->assignRef('user', $user);
|
|
(JRequest::getInt('cid')) ? $title = JText::_('K2_EDIT_ITEM') : $title = JText::_('K2_ADD_ITEM');
|
|
$this->assignRef('title', $title);
|
|
$this->assignRef('mainframe', $mainframe);
|
|
if ($mainframe->isAdmin())
|
|
{
|
|
$this->params->set('showImageTab', true);
|
|
$this->params->set('showImageGalleryTab', true);
|
|
$this->params->set('showVideoTab', true);
|
|
$this->params->set('showExtraFieldsTab', true);
|
|
$this->params->set('showAttachmentsTab', true);
|
|
$this->params->set('showK2Plugins', true);
|
|
JToolBarHelper::title($title, 'k2.png');
|
|
JToolBarHelper::save();
|
|
JToolBarHelper::custom('saveAndNew', 'save.png', 'save_f2.png', 'K2_SAVE_AND_NEW', false);
|
|
JToolBarHelper::apply();
|
|
JToolBarHelper::cancel();
|
|
}
|
|
// ACE ACL integration
|
|
$definedConstants = get_defined_constants();
|
|
if (!empty($definedConstants['ACEACL']) && AceaclApi::authorize('permissions', 'com_aceacl'))
|
|
{
|
|
$aceAclFlag = true;
|
|
}
|
|
else
|
|
{
|
|
$aceAclFlag = false;
|
|
}
|
|
$this->assignRef('aceAclFlag', $aceAclFlag);
|
|
|
|
// SIG PRO v3 integration
|
|
if (JPluginHelper::isEnabled('k2', 'jw_sigpro'))
|
|
{
|
|
$sigPro = true;
|
|
$sigProFolder = ($this->row->id) ? $this->row->id : uniqid();
|
|
$this->assignRef('sigProFolder', $sigProFolder);
|
|
}
|
|
else
|
|
{
|
|
$sigPro = false;
|
|
}
|
|
$this->assignRef('sigPro', $sigPro);
|
|
parent::display($tpl);
|
|
}
|
|
|
|
}
|