joomla_test/plugins/josetta_ext/k2item/classes/basek2plugin.php

220 lines
7.8 KiB
PHP
Raw Normal View History

2020-01-02 22:20:31 +07:00
<?php
/**
* @version $Id: basek2plugin.php 1812 2013-01-14 18:45:06Z 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
*/
defined('_JEXEC') or die ;
// include base class of josetta plugins
require_once JPATH_ADMINISTRATOR.DS.'components/com_josetta/classes/extensionplugin.php';
class plgJosetta_extBaseK2Plugin extends JosettaadminClass_Extensionplugin
{
protected $_context = 'com_k2';
public function loadLanguages()
{
// load Joomla global language files
parent::loadLanguages();
$language = JFactory::getLanguage();
// load the administrator english language of the component
$language->load('com_k2', JPATH_ADMINISTRATOR, 'en-GB', true);
// load the administrator default language of the component
$language->load('com_k2', JPATH_ADMINISTRATOR, null, true);
}
protected function _setPath()
{
$this->_path = JPATH_PLUGINS.'/josetta_ext/'.$this->_name;
}
/**
* Hook for 3rd party extensions to add a path to search for
* additional subtypes fields definitions
* To be used by extensions, for instance to handle specific menu items
* subtypes, or module subtypes
*
* @param string context
*/
public function onJosettaAddSubTypePath($context, $subType)
{
if (!empty($context) && ($context != $this->_context))
{
return;
}
// a 3rd party extension will use this hook to store a full path to
// a directory where fields_*.xml files can be found
// to be appended to the translation form,
// for instance:
$this->_subTypePath[] = JPATH_PLUGINS.'/josetta_ext/'.$this->_name;
}
/**
* Method to build a list filter for the main translator view
* Used when such filter is not one of the Josetta built in filters type
*
* @return array
*
*/
public function onJosettaGet3rdPartyFilter($context, $filterType, $filterName, $current)
{
if (!empty($context) && ($context != $this->_context))
{
return;
}
$filterHtml = '';
switch( $filterType)
{
case 'k2languagecategory' :
// this is a category, so use Joomla html helper to build the drop down
$filterHtml = '';
$filterHtml .= JText::_('COM_JOSETTA_CONTENT_CATEGORY');
$filterHtml .= '<select name="'.$filterName.'" id="'.$filterName.'" class="inputbox" onchange="this.form.submit()">'."\n";
$filterHtml .= '<option value="0">'.JText::_('JOPTION_SELECT_CATEGORY').'</option>'."\n";
$categoriesSelectConfig = array('filter.published' => array(0, 1), 'filter.languages' => array('*', JosettaHelper::getSiteDefaultLanguage()));
require_once JPATH_PLUGINS.'/josetta_ext/k2item/helpers/helper.php';
$categoriesOptionsHtml = JosettaK2ItemHelper::getCategoryOptionsPerLanguage($categoriesSelectConfig);
$filterHtml .= JHtml::_('select.options', $categoriesOptionsHtml, 'value', 'text', (int)($current))."\n";
$filterHtml .= "</select>\n";
break;
default :
break;
}
return empty($filterHtml) ? null : $filterHtml;
}
/**
*
* Compute the subtitle of a provided item
* Subtitle is used for display to the user of an item
* to provide more context
* By default, we use an item category
*
* @param string $context
* @param mixed $item
*/
public function onJosettaGetSubtitle($context, $item)
{
if (!empty($context) && ($context != $this->_context))
{
return;
}
$subTitle = '';
if (empty($item))
{
return $subTitle;
}
return $subTitle;
}
/**
* Hook for module to add their own fields processing
* to the form xml
*
* @return string
*/
protected function _output3rdPartyFieldsXml($xmlData, $field, $itemType, $item, $originalItem, $targetLanguage)
{
switch( $xmlData->fieldType)
{
case 'k2languagecategory' :
//add extension tag if type category is present
//add option tag in list if present in jform
foreach ($field->option as $option)
{
$xmlData->subfield .= '<option value="'.$option->value->data().'">'.$option->title->data().'</option>';
}
//Important for developer if using category type extension must be defined in xml
$xmlData->other .= ' languages="'.$targetLanguage.'"';
$multiple = !empty($field->multiple) && $field->multiple->data() == 'yes';
$xmlData->other .= $multiple ? ' multiple="true"' : '';
break;
default :
break;
}
return $xmlData;
}
/**
* Format a the original field value for display on the translate view
*
* @param object $originalItem the actual data of the original item
* @param string $originalFieldTitle the field title
* @param object $field the Joomla! field object
* @param string the formatted, ready to display, string
*/
public function onJosettaGet3rdPartyFormatOriginalField($originalItem, $originalFieldTitle, $field)
{
$html = null;
switch( strtolower( $field->type))
{
case 'k2languagecategory' :
// element id can be stored in 2 different locations, depending on plugin
$elementId = empty($originalItem->request) || !isset($originalItem->request['id']) ? null : $originalItem->request['id'];
$elementId = is_null($elementId) ? $originalItem->$originalFieldTitle : $elementId;
if (is_array($elementId))
{
// mmultiple categories selected
$size = $field->element->getAttribute('size');
$size = empty($size) ? 10 : $size;
$html = '<select name="josetta_dummy" id="josetta_dummy" class="inputbox" size="'.$size.'" multiple="multiple" disabled="disabled">'."\n";
$categoriesSelectConfig = array('filter.published' => array(0, 1), 'filter.languages' => array('*', JosettaHelper::getSiteDefaultLanguage()));
require_once JPATH_PLUGINS.'/josetta_ext/k2item/helpers/helper.php';
$categoriesOptionsHtml = JosettaK2ItemHelper::getCategoryOptionsPerLanguage($categoriesSelectConfig);
$html .= JHtml::_('select.options', $categoriesOptionsHtml, 'value', 'text', $elementId)."\n";
$html .= "</select>\n";
}
else
{
// just one category
if (empty($elementId))
{
$html = JText::_('ROOT');
}
else
{
require_once JPATH_PLUGINS.'/josetta_ext/k2item/helpers/helper.php';
$categories = JosettaK2ItemHelper::getCategoriesPerLanguage(null, 'id');
$categoryDetails = empty($categories[$elementId]) ? null : $categories[$elementId];
$html = empty($categoryDetails) ? $elementId : $categoryDetails->title;
if ($html == 'ROOT')
{
$html = JText::_('ROOT');
}
}
}
break;
}
return $html;
}
}