mirror of
https://github.com/joomla-extensions/weblinks.git
synced 2024-12-26 01:57:30 +00:00
Merge pull request #325 from astridx/frontend_view_single_weblink
Frontend view single weblink
This commit is contained in:
commit
3a32a86772
@ -0,0 +1,272 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package Joomla.Administrator
|
||||||
|
* @subpackage Weblinks
|
||||||
|
*
|
||||||
|
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
||||||
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
defined('JPATH_BASE') or die;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Supports a modal weblink picker.
|
||||||
|
*
|
||||||
|
* @since __DEPLOY_VERSION__
|
||||||
|
*/
|
||||||
|
class JFormFieldModal_Weblink extends JFormField
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The form field type.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since __DEPLOY_VERSION__
|
||||||
|
*/
|
||||||
|
protected $type = 'Modal_Weblink';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get the field input markup.
|
||||||
|
*
|
||||||
|
* @return string The field input markup.
|
||||||
|
*
|
||||||
|
* @since __DEPLOY_VERSION__
|
||||||
|
*/
|
||||||
|
protected function getInput()
|
||||||
|
{
|
||||||
|
$allowNew = ((string) $this->element['new'] == 'true');
|
||||||
|
$allowEdit = ((string) $this->element['edit'] == 'true');
|
||||||
|
$allowClear = ((string) $this->element['clear'] != 'false');
|
||||||
|
$allowSelect = ((string) $this->element['select'] != 'false');
|
||||||
|
|
||||||
|
// Load language
|
||||||
|
JFactory::getLanguage()->load('com_weblinks', JPATH_ADMINISTRATOR);
|
||||||
|
|
||||||
|
// The active weblink id field.
|
||||||
|
$value = (int) $this->value > 0 ? (int) $this->value : '';
|
||||||
|
|
||||||
|
// Create the modal id.
|
||||||
|
$modalId = 'Weblink_' . $this->id;
|
||||||
|
|
||||||
|
// Add the modal field script to the document head.
|
||||||
|
JHtml::_('jquery.framework');
|
||||||
|
JHtml::_('script', 'system/modal-fields.js', array('version' => 'auto', 'relative' => true));
|
||||||
|
|
||||||
|
// Script to proxy the select modal function to the modal-fields.js file.
|
||||||
|
if ($allowSelect)
|
||||||
|
{
|
||||||
|
static $scriptSelect = null;
|
||||||
|
|
||||||
|
if (is_null($scriptSelect))
|
||||||
|
{
|
||||||
|
$scriptSelect = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($scriptSelect[$this->id]))
|
||||||
|
{
|
||||||
|
JFactory::getDocument()->addScriptDeclaration("
|
||||||
|
function jSelectWeblink_" . $this->id . "(id, title, catid, object, url, language) {
|
||||||
|
window.processModalSelect('Weblink', '" . $this->id . "', id, title, catid, object, url, language);
|
||||||
|
}
|
||||||
|
");
|
||||||
|
|
||||||
|
$scriptSelect[$this->id] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup variables for display.
|
||||||
|
$linkWeblinks = 'index.php?option=com_weblinks&view=weblinks&layout=modal&tmpl=component&' . JSession::getFormToken() . '=1';
|
||||||
|
$linkWeblink = 'index.php?option=com_weblinks&view=weblink&layout=modal&tmpl=component&' . JSession::getFormToken() . '=1';
|
||||||
|
|
||||||
|
if (isset($this->element['language']))
|
||||||
|
{
|
||||||
|
$linkWeblinks .= '&forcedLanguage=' . $this->element['language'];
|
||||||
|
$linkWeblink .= '&forcedLanguage=' . $this->element['language'];
|
||||||
|
$modalTitle = JText::_('COM_WEBLINKS_CHANGE_WEBLINK') . ' — ' . $this->element['label'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$modalTitle = JText::_('COM_WEBLINKS_CHANGE_WEBLINK');
|
||||||
|
}
|
||||||
|
|
||||||
|
$urlSelect = $linkWeblinks . '&function=jSelectWeblink_' . $this->id;
|
||||||
|
$urlEdit = $linkWeblink . '&task=weblink.edit&id=\' + document.getElementById("' . $this->id . '_id").value + \'';
|
||||||
|
$urlNew = $linkWeblink . '&task=weblink.add';
|
||||||
|
|
||||||
|
if ($value)
|
||||||
|
{
|
||||||
|
$db = JFactory::getDbo();
|
||||||
|
$query = $db->getQuery(true)
|
||||||
|
->select($db->quoteName('title'))
|
||||||
|
->from($db->quoteName('#__weblinks'))
|
||||||
|
->where($db->quoteName('id') . ' = ' . (int) $value);
|
||||||
|
$db->setQuery($query);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$title = $db->loadResult();
|
||||||
|
}
|
||||||
|
catch (RuntimeException $e)
|
||||||
|
{
|
||||||
|
JError::raiseWarning(500, $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$title = empty($title) ? JText::_('COM_WEBLINKS_SELECT_AN_WEBLINK') : htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
|
||||||
|
|
||||||
|
// The current weblink display field.
|
||||||
|
$html = '<span class="input-append">';
|
||||||
|
$html .= '<input class="input-medium" id="' . $this->id . '_name" type="text" value="' . $title . '" disabled="disabled" size="35" />';
|
||||||
|
|
||||||
|
// Select weblink button
|
||||||
|
if ($allowSelect)
|
||||||
|
{
|
||||||
|
$html .= '<a'
|
||||||
|
. ' class="btn hasTooltip' . ($value ? ' hidden' : '') . '"'
|
||||||
|
. ' id="' . $this->id . '_select"'
|
||||||
|
. ' data-toggle="modal"'
|
||||||
|
. ' role="button"'
|
||||||
|
. ' href="#ModalSelect' . $modalId . '"'
|
||||||
|
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_CHANGE_WEBLINK') . '">'
|
||||||
|
. '<span class="icon-file"></span> ' . JText::_('JSELECT')
|
||||||
|
. '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// New weblink button
|
||||||
|
if ($allowNew)
|
||||||
|
{
|
||||||
|
$html .= '<a'
|
||||||
|
. ' class="btn hasTooltip' . ($value ? ' hidden' : '') . '"'
|
||||||
|
. ' id="' . $this->id . '_new"'
|
||||||
|
. ' data-toggle="modal"'
|
||||||
|
. ' role="button"'
|
||||||
|
. ' href="#ModalNew' . $modalId . '"'
|
||||||
|
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_NEW_WEBLINK') . '">'
|
||||||
|
. '<span class="icon-new"></span> ' . JText::_('JACTION_CREATE')
|
||||||
|
. '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Edit weblink button
|
||||||
|
if ($allowEdit)
|
||||||
|
{
|
||||||
|
$html .= '<a'
|
||||||
|
. ' class="btn hasTooltip' . ($value ? '' : ' hidden') . '"'
|
||||||
|
. ' id="' . $this->id . '_edit"'
|
||||||
|
. ' data-toggle="modal"'
|
||||||
|
. ' role="button"'
|
||||||
|
. ' href="#ModalEdit' . $modalId . '"'
|
||||||
|
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_EDIT_WEBLINK') . '">'
|
||||||
|
. '<span class="icon-edit"></span> ' . JText::_('JACTION_EDIT')
|
||||||
|
. '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear weblink button
|
||||||
|
if ($allowClear)
|
||||||
|
{
|
||||||
|
$html .= '<a'
|
||||||
|
. ' class="btn' . ($value ? '' : ' hidden') . '"'
|
||||||
|
. ' id="' . $this->id . '_clear"'
|
||||||
|
. ' href="#"'
|
||||||
|
. ' onclick="window.processModalParent(\'' . $this->id . '\'); return false;">'
|
||||||
|
. '<span class="icon-remove"></span>' . JText::_('JCLEAR')
|
||||||
|
. '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$html .= '</span>';
|
||||||
|
|
||||||
|
// Select weblink modal
|
||||||
|
if ($allowSelect)
|
||||||
|
{
|
||||||
|
$html .= JHtml::_(
|
||||||
|
'bootstrap.renderModal',
|
||||||
|
'ModalSelect' . $modalId,
|
||||||
|
array(
|
||||||
|
'title' => $modalTitle,
|
||||||
|
'url' => $urlSelect,
|
||||||
|
'height' => '400px',
|
||||||
|
'width' => '800px',
|
||||||
|
'bodyHeight' => '70',
|
||||||
|
'modalWidth' => '80',
|
||||||
|
'footer' => '<a role="button" class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// New weblink modal
|
||||||
|
if ($allowNew)
|
||||||
|
{
|
||||||
|
$html .= JHtml::_(
|
||||||
|
'bootstrap.renderModal',
|
||||||
|
'ModalNew' . $modalId,
|
||||||
|
array(
|
||||||
|
'title' => JText::_('COM_WEBLINKS_NEW_WEBLINK'),
|
||||||
|
'backdrop' => 'static',
|
||||||
|
'keyboard' => false,
|
||||||
|
'closeButton' => false,
|
||||||
|
'url' => $urlNew,
|
||||||
|
'height' => '400px',
|
||||||
|
'width' => '800px',
|
||||||
|
'bodyHeight' => '70',
|
||||||
|
'modalWidth' => '80',
|
||||||
|
'footer' => '<a role="button" class="btn" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'cancel\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>'
|
||||||
|
. '<a role="button" class="btn btn-primary" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'save\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JSAVE') . '</a>'
|
||||||
|
. '<a role="button" class="btn btn-success" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'apply\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JAPPLY') . '</a>',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Edit weblink modal
|
||||||
|
if ($allowEdit)
|
||||||
|
{
|
||||||
|
$html .= JHtml::_(
|
||||||
|
'bootstrap.renderModal',
|
||||||
|
'ModalEdit' . $modalId,
|
||||||
|
array(
|
||||||
|
'title' => JText::_('COM_WEBLINKS_EDIT_WEBLINK'),
|
||||||
|
'backdrop' => 'static',
|
||||||
|
'keyboard' => false,
|
||||||
|
'closeButton' => false,
|
||||||
|
'url' => $urlEdit,
|
||||||
|
'height' => '400px',
|
||||||
|
'width' => '800px',
|
||||||
|
'bodyHeight' => '70',
|
||||||
|
'modalWidth' => '80',
|
||||||
|
'footer' => '<a role="button" class="btn" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'cancel\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>'
|
||||||
|
. '<a role="button" class="btn btn-primary" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'save\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JSAVE') . '</a>'
|
||||||
|
. '<a role="button" class="btn btn-success" aria-hidden="true"'
|
||||||
|
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'apply\', \'item-form\'); return false;">'
|
||||||
|
. JText::_('JAPPLY') . '</a>',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: class='required' for client side validation.
|
||||||
|
$class = $this->required ? ' class="required modal-value"' : '';
|
||||||
|
|
||||||
|
$html .= '<input type="hidden" id="' . $this->id . '_id" ' . $class . ' data-required="' . (int) $this->required . '" name="' . $this->name
|
||||||
|
. '" data-text="' . htmlspecialchars(JText::_('COM_WEBLINKS_SELECT_AN_WEBLINK', true), ENT_COMPAT, 'UTF-8') . '" value="' . $value . '" />';
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to get the field label markup.
|
||||||
|
*
|
||||||
|
* @return string The field label markup.
|
||||||
|
*
|
||||||
|
* @since __DEPLOY_VERSION__
|
||||||
|
*/
|
||||||
|
protected function getLabel()
|
||||||
|
{
|
||||||
|
return str_replace($this->id, $this->id . '_id', parent::getLabel());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package Joomla.Administrator
|
||||||
|
* @subpackage Weblinks
|
||||||
|
*
|
||||||
|
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
||||||
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
|
JHtml::_('bootstrap.tooltip', '.hasTooltip', array('placement' => 'bottom'));
|
||||||
|
|
||||||
|
// @deprecated 4.0 the function parameter, the inline js and the buttons are not needed since 3.7.0.
|
||||||
|
$function = JFactory::getApplication()->input->getCmd('function', 'jEditWeblink_' . (int) $this->item->id);
|
||||||
|
|
||||||
|
// Function to update input title when changed
|
||||||
|
JFactory::getDocument()->addScriptDeclaration('
|
||||||
|
function jEditWeblinkModal() {
|
||||||
|
if (window.parent && document.formvalidator.isValid(document.getElementById("item-form"))) {
|
||||||
|
return window.parent.' . $this->escape($function) . '(document.getElementById("jform_title").value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
');
|
||||||
|
?>
|
||||||
|
<button id="applyBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.apply'); jEditWeblinkModal();"></button>
|
||||||
|
<button id="saveBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.save'); jEditWeblinkModal();"></button>
|
||||||
|
<button id="closeBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.cancel');"></button>
|
||||||
|
|
||||||
|
<div class="container-popup">
|
||||||
|
<?php $this->setLayout('edit'); ?>
|
||||||
|
<?php echo $this->loadTemplate(); ?>
|
||||||
|
</div>
|
@ -0,0 +1,163 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package Joomla.Administrator
|
||||||
|
* @subpackage Weblinks
|
||||||
|
*
|
||||||
|
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
||||||
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
|
$app = JFactory::getApplication();
|
||||||
|
|
||||||
|
if ($app->isClient('site'))
|
||||||
|
{
|
||||||
|
JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN'));
|
||||||
|
}
|
||||||
|
|
||||||
|
JLoader::register('WeblinksHelperRoute', JPATH_ROOT . '/components/com_weblinks/helpers/route.php');
|
||||||
|
|
||||||
|
// Include the component HTML helpers.
|
||||||
|
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
|
||||||
|
|
||||||
|
JHtml::_('behavior.core');
|
||||||
|
JHtml::_('behavior.polyfill', array('event'), 'lt IE 9');
|
||||||
|
JHtml::_('script', 'com_weblinks/admin-weblinks-modal.js', array('version' => 'auto', 'relative' => true));
|
||||||
|
JHtml::_('bootstrap.tooltip', '.hasTooltip', array('placement' => 'bottom'));
|
||||||
|
JHtml::_('formbehavior.chosen', 'select');
|
||||||
|
|
||||||
|
// Special case for the search field tooltip.
|
||||||
|
$searchFilterDesc = $this->filterForm->getFieldAttribute('search', 'description', null, 'filter');
|
||||||
|
JHtml::_('bootstrap.tooltip', '#filter_search', array('title' => JText::_($searchFilterDesc), 'placement' => 'bottom'));
|
||||||
|
|
||||||
|
$function = $app->input->getCmd('function', 'jSelectWeblink');
|
||||||
|
$editor = $app->input->getCmd('editor', '');
|
||||||
|
$listOrder = $this->escape($this->state->get('list.ordering'));
|
||||||
|
$listDirn = $this->escape($this->state->get('list.direction'));
|
||||||
|
$onclick = $this->escape($function);
|
||||||
|
|
||||||
|
if (!empty($editor))
|
||||||
|
{
|
||||||
|
// This view is used also in com_menus. Load the xtd script only if the editor is set!
|
||||||
|
JFactory::getDocument()->addScriptOptions('xtd-weblinks', array('editor' => $editor));
|
||||||
|
$onclick = "jSelectWeblink";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<div class="container-popup">
|
||||||
|
|
||||||
|
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&view=weblinks&layout=modal&tmpl=component&function=' . $function . '&' . JSession::getFormToken() . '=1&editor=' . $editor); ?>" method="post" name="adminForm" id="adminForm" class="form-inline">
|
||||||
|
|
||||||
|
<?php echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?>
|
||||||
|
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
|
||||||
|
<?php if (empty($this->items)) : ?>
|
||||||
|
<div class="alert alert-no-items">
|
||||||
|
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
|
||||||
|
</div>
|
||||||
|
<?php else : ?>
|
||||||
|
<table class="table table-striped table-condensed">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="1%" class="center nowrap">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
<th class="title">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
<th width="10%" class="nowrap hidden-phone">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
<th width="15%" class="nowrap">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
<th width="5%" class="nowrap hidden-phone">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
<th width="1%" class="nowrap hidden-phone">
|
||||||
|
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td colspan="6">
|
||||||
|
<?php echo $this->pagination->getListFooter(); ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
$iconStates = array(
|
||||||
|
-2 => 'icon-trash',
|
||||||
|
0 => 'icon-unpublish',
|
||||||
|
1 => 'icon-publish',
|
||||||
|
2 => 'icon-archive',
|
||||||
|
);
|
||||||
|
?>
|
||||||
|
<?php foreach ($this->items as $i => $item) : ?>
|
||||||
|
<?php if ($item->language && JLanguageMultilang::isEnabled())
|
||||||
|
{
|
||||||
|
$tag = strlen($item->language);
|
||||||
|
if ($tag == 5)
|
||||||
|
{
|
||||||
|
$lang = substr($item->language, 0, 2);
|
||||||
|
}
|
||||||
|
elseif ($tag == 6)
|
||||||
|
{
|
||||||
|
$lang = substr($item->language, 0, 3);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$lang = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif (!JLanguageMultilang::isEnabled())
|
||||||
|
{
|
||||||
|
$lang = '';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<tr class="row<?php echo $i % 2; ?>">
|
||||||
|
<td class="center">
|
||||||
|
<span class="<?php echo $iconStates[$this->escape($item->state)]; ?>"></span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php $attribs = 'data-function="' . $this->escape($onclick) . '"'
|
||||||
|
. ' data-id="' . $item->id . '"'
|
||||||
|
. ' data-title="' . $this->escape(addslashes($item->title)) . '"'
|
||||||
|
. ' data-cat-id="' . $this->escape($item->catid) . '"'
|
||||||
|
. ' data-uri="' . $this->escape(WeblinksHelperRoute::getWeblinkRoute($item->id, $item->catid, $item->language)) . '"'
|
||||||
|
. ' data-language="' . $this->escape($lang) . '"';
|
||||||
|
?>
|
||||||
|
<a class="select-link" href="javascript:void(0)" <?php echo $attribs; ?>>
|
||||||
|
<?php echo $this->escape($item->title); ?>
|
||||||
|
</a>
|
||||||
|
<div class="small">
|
||||||
|
<?php echo JText::_('JCATEGORY') . ': ' . $this->escape($item->category_title); ?>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class="small hidden-phone">
|
||||||
|
<?php echo $this->escape($item->access_level); ?>
|
||||||
|
</td>
|
||||||
|
<td class="small">
|
||||||
|
<?php echo JLayoutHelper::render('joomla.weblinks.language', $item); ?>
|
||||||
|
</td>
|
||||||
|
<td class="nowrap small hidden-phone">
|
||||||
|
<?php // todo echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?>
|
||||||
|
</td>
|
||||||
|
<td class="nowrap small hidden-phone">
|
||||||
|
<?php echo (int) $item->id; ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<input type="hidden" name="task" value="" />
|
||||||
|
<input type="hidden" name="boxchecked" value="0" />
|
||||||
|
<input type="hidden" name="forcedLanguage" value="<?php echo $app->input->get('forcedLanguage', '', 'CMD'); ?>" />
|
||||||
|
<?php echo JHtml::_('form.token'); ?>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
@ -33,6 +33,9 @@
|
|||||||
</schemas>
|
</schemas>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<media folder="media" destination="com_weblinks">
|
||||||
|
<folder>js</folder>
|
||||||
|
</media>
|
||||||
<files folder="components/com_weblinks">
|
<files folder="components/com_weblinks">
|
||||||
##FRONTEND_COMPONENT_FILES##
|
##FRONTEND_COMPONENT_FILES##
|
||||||
</files>
|
</files>
|
||||||
|
@ -22,4 +22,10 @@ COM_WEBLINKS_LINKS="Links"
|
|||||||
COM_WEBLINKS_TAGS_WEBLINK="Web Link"
|
COM_WEBLINKS_TAGS_WEBLINK="Web Link"
|
||||||
COM_WEBLINKS_TAGS_CATEGORY="Web Link Category"
|
COM_WEBLINKS_TAGS_CATEGORY="Web Link Category"
|
||||||
COM_WEBLINKS_XML_DESCRIPTION="Component for web links management."
|
COM_WEBLINKS_XML_DESCRIPTION="Component for web links management."
|
||||||
|
; menu item
|
||||||
|
COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_DESC="Display a single weblink"
|
||||||
|
COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_TITLE="Single Weblink"
|
||||||
|
COM_WEBLINKS_FIELD_SELECT_WEBLINK_DESC="Select the desired weblink from the list."
|
||||||
|
COM_WEBLINKS_FIELD_SELECT_WEBLINK_LABEL="Select Weblink"
|
||||||
|
COM_WEBLINKS_CHANGE_WEBLINK="Select or Change weblink"
|
||||||
|
COM_WEBLINKS_SELECT_AN_WEBLINK="Select Weblink"
|
||||||
|
38
src/components/com_weblinks/views/weblink/tmpl/default.php
Normal file
38
src/components/com_weblinks/views/weblink/tmpl/default.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package Joomla.Site
|
||||||
|
* @subpackage com_weblinks
|
||||||
|
*
|
||||||
|
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
||||||
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
|
$params = $this->item->params;
|
||||||
|
|
||||||
|
?>
|
||||||
|
<div class="item-page">
|
||||||
|
<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*') ? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
|
||||||
|
<div class="page-header">
|
||||||
|
<h2 itemprop="headline">
|
||||||
|
<?php echo $this->escape($this->item->title); ?>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php // Content is generated by content plugin event "onContentAfterTitle" ?>
|
||||||
|
<?php echo $this->item->event->afterDisplayTitle; ?>
|
||||||
|
|
||||||
|
<?php // Content is generated by content plugin event "onContentBeforeDisplay" ?>
|
||||||
|
<?php echo $this->item->event->beforeDisplayContent; ?>
|
||||||
|
|
||||||
|
<div itemprop="articleBody">
|
||||||
|
<a href="<?php echo $this->item->url; ?>" target="_blank" itemprop="url">
|
||||||
|
<?php echo JStringPunycode::urlToUTF8($this->item->url); ?>
|
||||||
|
</a>
|
||||||
|
<?php echo $this->item->description; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
|
||||||
|
<?php echo $this->item->event->afterDisplayContent; ?>
|
||||||
|
</div>
|
27
src/components/com_weblinks/views/weblink/tmpl/default.xml
Normal file
27
src/components/com_weblinks/views/weblink/tmpl/default.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<metadata>
|
||||||
|
<layout title="com_weblinks_weblink_view_default_title" option="com_weblinks_weblink_view_default_option">
|
||||||
|
<help
|
||||||
|
key = "JHELP_MENUS_MENU_ITEM_WEBLINK_SINGLE_WEBLINK"
|
||||||
|
/>
|
||||||
|
<message>
|
||||||
|
<![CDATA[com_weblinks_weblink_view_default_desc]]>
|
||||||
|
</message>
|
||||||
|
</layout>
|
||||||
|
|
||||||
|
<fields name="request">
|
||||||
|
<fieldset name="request"
|
||||||
|
addfieldpath="/administrator/components/com_weblinks/models/fields">
|
||||||
|
|
||||||
|
<field name="id" type="modal_weblink"
|
||||||
|
label="COM_WEBLINKS_FIELD_SELECT_WEBLINK_LABEL"
|
||||||
|
required="true"
|
||||||
|
select="true"
|
||||||
|
new="true"
|
||||||
|
edit="true"
|
||||||
|
clear="true"
|
||||||
|
description="COM_WEBLINKS_FIELD_SELECT_WEBLINK_DESC"
|
||||||
|
/>
|
||||||
|
</fieldset>
|
||||||
|
</fields>
|
||||||
|
</metadata>
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @package Joomla.Administrator
|
* @package Joomla.Site
|
||||||
* @subpackage Weblinks
|
* @subpackage com_weblinks
|
||||||
*
|
*
|
||||||
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
|
||||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
@ -10,18 +10,20 @@
|
|||||||
defined('_JEXEC') or die;
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTML View class for the WebLinks component
|
* HTML Weblink View class for the Weblinks component
|
||||||
*
|
*
|
||||||
* @since 1.5
|
* @since __DEPLOY_VERSION__
|
||||||
*/
|
*/
|
||||||
class WeblinksViewWeblink extends JViewLegacy
|
class WeblinksViewWeblink extends JViewLegacy
|
||||||
{
|
{
|
||||||
protected $state;
|
|
||||||
|
|
||||||
protected $item;
|
protected $item;
|
||||||
|
|
||||||
|
protected $params;
|
||||||
|
|
||||||
|
protected $state;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the view.
|
* Execute and display a template script.
|
||||||
*
|
*
|
||||||
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
|
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
|
||||||
*
|
*
|
||||||
@ -29,25 +31,30 @@ class WeblinksViewWeblink extends JViewLegacy
|
|||||||
*/
|
*/
|
||||||
public function display($tpl = null)
|
public function display($tpl = null)
|
||||||
{
|
{
|
||||||
// Get some data from the models
|
$dispatcher = JEventDispatcher::getInstance();
|
||||||
$item = $this->get('Item');
|
|
||||||
|
|
||||||
if ($this->getLayout() == 'edit')
|
$this->item = $this->get('Item');
|
||||||
{
|
$this->state = $this->get('State');
|
||||||
$this->_displayEdit($tpl);
|
$this->params = $this->state->get('params');
|
||||||
|
|
||||||
return;
|
// Create a shortcut for $item.
|
||||||
}
|
$item = $this->item;
|
||||||
|
|
||||||
if ($item->url)
|
$offset = $this->state->get('list.offset');
|
||||||
{
|
|
||||||
// Redirects to url if matching id found
|
$dispatcher->trigger('onWeblinksPrepare', array ('com_weblinks.weblink', &$item, &$item->params, $offset));
|
||||||
JFactory::getApplication()->redirect($item->url);
|
|
||||||
}
|
$item->event = new stdClass;
|
||||||
else
|
|
||||||
{
|
$results = $dispatcher->trigger('onWeblinksAfterTitle', array('com_weblinks.weblink', &$item, &$item->params, $offset));
|
||||||
// @TODO create proper error handling
|
$item->event->afterDisplayTitle = trim(implode("\n", $results));
|
||||||
JFactory::getApplication()->redirect(JRoute::_('index.php'), JText::_('COM_WEBLINKS_ERROR_WEBLINK_NOT_FOUND'), 'notice');
|
|
||||||
}
|
$results = $dispatcher->trigger('onWeblinksBeforeDisplay', array('com_weblinks.weblink', &$item, &$item->params, $offset));
|
||||||
|
$item->event->beforeDisplayContent = trim(implode("\n", $results));
|
||||||
|
|
||||||
|
$results = $dispatcher->trigger('onWeblinksAfterDisplay', array('com_weblinks.weblink', &$item, &$item->params, $offset));
|
||||||
|
$item->event->afterDisplayContent = trim(implode("\n", $results));
|
||||||
|
|
||||||
|
parent::display($tpl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
61
src/media/js/admin-weblinks-modal.js
Normal file
61
src/media/js/admin-weblinks-modal.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/**
|
||||||
|
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
|
||||||
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
|
*/
|
||||||
|
(function() {
|
||||||
|
"use strict";
|
||||||
|
/**
|
||||||
|
* Javascript to insert the link
|
||||||
|
* View element calls jSelectWeblink when an weblink is clicked
|
||||||
|
* jSelectWeblink creates the link tag, sends it to the editor,
|
||||||
|
* and closes the select frame.
|
||||||
|
**/
|
||||||
|
window.jSelectWeblink = function (id, title, catid, object, link, lang) {
|
||||||
|
var hreflang = '', editor, tag;
|
||||||
|
|
||||||
|
if (!Joomla.getOptions('xtd-weblinks')) {
|
||||||
|
// Something went wrong!
|
||||||
|
window.parent.jModalClose();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
editor = Joomla.getOptions('xtd-weblinks').editor;
|
||||||
|
|
||||||
|
if (lang !== '')
|
||||||
|
{
|
||||||
|
hreflang = ' hreflang="' + lang + '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = '<a' + hreflang + ' href="' + link + '">' + title + '</a>';
|
||||||
|
|
||||||
|
/** Use the API, if editor supports it **/
|
||||||
|
if (window.Joomla && window.Joomla.editors && Joomla.editors.instances && Joomla.editors.instances.hasOwnProperty(editor)) {
|
||||||
|
Joomla.editors.instances[editor].replaceSelection(tag)
|
||||||
|
} else {
|
||||||
|
window.parent.jInsertEditorText(tag, editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.parent.jModalClose();
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function(){
|
||||||
|
// Get the elements
|
||||||
|
var elements = document.querySelectorAll('.select-link');
|
||||||
|
|
||||||
|
for(var i = 0, l = elements.length; l>i; i++) {
|
||||||
|
// Listen for click event
|
||||||
|
elements[i].addEventListener('click', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var functionName = event.target.getAttribute('data-function');
|
||||||
|
|
||||||
|
if (functionName === 'jSelectWeblink') {
|
||||||
|
// Used in xtd_contacts
|
||||||
|
window[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-cat-id'), null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language'));
|
||||||
|
} else {
|
||||||
|
// Used in com_menus
|
||||||
|
window.parent[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-cat-id'), null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language'));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
Loading…
Reference in New Issue
Block a user