1
0
mirror of https://github.com/e107inc/e107.git synced 2025-04-21 21:21:54 +02:00

Linkwords; some tidying, option to suppress clickable links that point to current page

This commit is contained in:
e107steved 2010-01-16 20:49:55 +00:00
parent feaeb58632
commit c26ce95a15
3 changed files with 79 additions and 40 deletions

View File

@ -2,15 +2,15 @@
/*
* e107 website system
*
* Copyright (C) 2008-2009 e107 Inc (e107.org)
* Copyright (C) 2008-2010 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Linkwords plugin - admin page
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/linkwords/admin_config.php,v $
* $Revision: 1.12 $
* $Date: 2010-01-02 22:57:41 $
* $Revision: 1.13 $
* $Date: 2010-01-16 20:49:51 $
* $Author: e107steved $
*/
@ -20,7 +20,7 @@
*
* @package e107_plugins
* @subpackage linkwords
* @version $Id: admin_config.php,v 1.12 2010-01-02 22:57:41 e107steved Exp $;
* @version $Id: admin_config.php,v 1.13 2010-01-16 20:49:51 e107steved Exp $;
*
* Administration page
*/
@ -119,6 +119,7 @@ if (isset($_POST['saveopts_linkword']))
}
$pref['lw_page_visibility'] = '2-'.implode("|", $pagelist); // '2' for 'hide on specified pages'
$pref['lw_ajax_enable'] = isset($_POST['lw_ajax_enable']);
$pref['lw_notsamepage'] = isset($_POST['lw_notsamepage']);
save_prefs();
$logString = implode(', ',$pref['lw_context_visibility']).'[!br!]'.$pref['lw_page_visibility'].'[!br!]'.$pref['lw_ajax_enable'];
$e107->ecache->clear_sys(LW_CACHE_TAG);
@ -345,27 +346,36 @@ if ($action=='options')
<td class='forumheader3'>";
foreach ($lw_context_areas as $lw_key=>$lw_desc)
{
$checked = $pref['lw_context_visibility'][$lw_key] ? 'checked=checked' : '';
$text .= "<input type='checkbox' name='lw_visibility_area[]' value={$lw_key} {$checked} />{$lw_desc}<br />";
$checked = $pref['lw_context_visibility'][$lw_key] ? "checked='checked'" : '';
$text .= "<input type='checkbox' name='lw_visibility_area[]' value='{$lw_key}' {$checked} />{$lw_desc}<br />";
}
$text .= "</td>
<td class='forumheader3'>".LWLAN_27."
<td class='forumheader3'>".LWLAN_27."</td>
</tr>
<tr>
<td class='forumheader3'>".LWLAN_28."</td>
<td class='forumheader3'><textarea rows='5' cols='60' class='tbox' name='linkword_omit_pages' >".$menu_pages."</textarea>
</td>
<td class='forumheader3'>".LWLAN_29."
<td class='forumheader3'>".LWLAN_29."</td>
</tr>";
$checked = varset($pref['lw_ajax_enable'],0) ? 'checked=checked' : '';
$text .= "
<tr>
<td class='forumheader3'>".LWLAN_59."</td>
<td class='forumheader3'><input type='checkbox' name='lw_ajax_enable' {$checked}>
<td class='forumheader3'><input type='checkbox' name='lw_ajax_enable' {$checked} />
</td>
<td class='forumheader3'>".""."
<td class='forumheader3'>".""."</td>
</tr>";
$checked = varset($pref['lw_notsamepage'],0) ? 'checked=checked' : '';
$text .= "
<tr>
<td class='forumheader3'>".LWLAN_64."</td>
<td class='forumheader3'><input type='checkbox' name='lw_notsamepage' {$checked} />
</td>
<td class='forumheader3'>".LWLAN_65."</td>
</tr>
<tr>

View File

@ -2,37 +2,29 @@
/*
* e107 website system
*
* Copyright (C) 2008-2009 e107 Inc (e107.org)
* Copyright (C) 2008-2010 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
*
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/linkwords/e_tohtml.php,v $
* $Revision: 1.10 $
* $Date: 2010-01-02 22:57:41 $
* $Revision: 1.11 $
* $Date: 2010-01-16 20:49:53 $
* $Author: e107steved $
*/
/*
|
| *utf - flags functions which need utf-8-aware code
TODO:
1. Add utf-8 aware routines - done, test a bit more
2. Add special effects for tooltips
3. Caching?
|
+----------------------------------------------------------------------------+
*/
/**
* e107 Linkword plugin
*
* @package e107_plugins
* @subpackage linkwords
* @version $Id: e_tohtml.php,v 1.10 2010-01-02 22:57:41 e107steved Exp $;
* @version $Id: e_tohtml.php,v 1.11 2010-01-16 20:49:53 e107steved Exp $;
*
* 'Hook' page
* The class is 'hooked' by the parser, to add linkword capability to any context where its enabled.
*
* @todo Link to capability for clever display options on tooltips
*/
if (!defined('e107_INIT')) { exit; }
@ -187,14 +179,17 @@ class e_tohtml_linkwords
}
return $ptext;
}
function linksproc($text,$first,$limit)
{ // This function is called recursively - it splits the text up into blocks - some containing a particular linkword
global $tp;
$tp = e107::getParser();
$doSamePage = !e107::getPref('lw_notsamepage');
// Consider next line - stripos is PHP5, and mb_stripos is PHP >= 5.2 - so may well often require handling
// while (($first < $limit) && (stripos($text,$this->word_list[$first]) === FALSE)) { $first++; }; // *utf (stripos is PHP5 - compatibility handler implements)
while (($first < $limit) && (strpos($tp->uStrToLower($text),$this->word_list[$first]) === FALSE)) { $first++; }; // *utf
while (($first < $limit) && (strpos($tp->ustrtolower($text),$this->word_list[$first]) === FALSE)) { $first++; }; // *utf
if ($first == $limit) return $text; // Return if no linkword found
// There's at least one occurrence of the linkword in the text
@ -224,9 +219,13 @@ class e_tohtml_linkwords
}
if ($this->link_list[$first])
{ // Got link
$linkwd = " href='".$tp->replaceConstants($this->link_list[$first])."' ";
if ($this->ext_list[$first]) { $linkrel[] = 'external'; } // Determine external links
$lwClass[] = 'lw_link';
$newLink = $tp->replaceConstants($this->link_list[$first], 'full');
if ($doSamePage || ($newLink != e_SELF.'?'.e_QUERY))
{
$linkwd = " href='".$newLink."' ";
if ($this->ext_list[$first]) { $linkrel[] = 'external'; } // Determine external links
$lwClass[] = 'lw_link';
}
}
if (!count($lwClass))
{

View File

@ -1,5 +1,30 @@
<?php
/*
* e107 website system
*
* Copyright (C) 2008-2010 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Linkwords plugin - language file (only needed for admin)
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/linkwords/languages/English_admin_linkwords.php,v $
* $Revision: 1.2 $
* $Date: 2010-01-16 20:49:55 $
* $Author: e107steved $
*/
/**
* e107 Linkword plugin
*
* @package e107_plugins
* @subpackage linkwords
* @version $Id: English_admin_linkwords.php,v 1.2 2010-01-16 20:49:55 e107steved Exp $;
*
* Language file
*/
define("LWLAN_1", "Field(s) left blank.");
define("LWLAN_2", "Link word saved.");
define("LWLAN_3", "Link word updated.");
@ -66,26 +91,31 @@ define('LWLAN_60', 'LW ID');
define('LWLAN_61', 'ID');
define('LWLAN_62', 'Tooltip ID (LW ID)');
define('LWLAN_63', '(Positive integers only)');
define('LWLAN_64', 'Suppress link on current page');
define('LWLAN_65', 'When checked, suppresses clickable link if points to current page');
// Installation-related
define("LWLANINS_1", "Linkwords");
define("LWLANINS_2", "This plugin links specified words with a defined link and/or tooltip");
define("LWLANINS_3", "Configure LinkWords");
define("LWLANINS_4", "To configure please click on the link in the plugins section of the admin front page");
define("LWLANINS_5", 'Upgrade complete');
define('LWLANINS_1', 'Linkwords');
define('LWLANINS_2', 'This plugin links specified words with a defined link and/or tooltip');
define('LWLANINS_3', 'Configure LinkWords');
define('LWLANINS_4', 'To configure please click on the link in the plugins section of the admin front page');
define('LWLANINS_5', 'Upgrade complete');
// Help text
define('LAN_LW_HELP_00','Linkwords Help');
define('LAN_LW_HELP_01','
<b><u>Areas to enable</u></b><br />
<b>Areas to enable</b><br />
many areas of text have an associated \'context\', and linkwords will only be displayed in areas matching that context.<br /><br />
<b><u>Linkwords Disable</u></b><br />
<b>Linkwords Disable</b><br />
Linkwords may be disabled on specific pages, or pages matching a pattern. Enter these here (same syntax as for menus), one pattern per line.
If the pattern ends in \'!\', this corresponds to \'end of query\', and is usually an exact match. Otherwise any URL containing the specified string will match.<br />
Note that linkwords are <i>never</i> displayed on admin pages.
<b><u>Enable Ajax Functionality</u></b><br />
The tooltips can use Ajax to get information for display. This usually requires some custom coding.
Note that linkwords are <i>never</i> displayed on admin pages.<br /><br />
<b>Enable Ajax Functionality</b><br />
The tooltips can use Ajax to get information for display. This usually requires some custom coding.<br /><br />
<b>Suppress link on current page</b><br />
Usually its pointless for the user to be able to click a link if they\'re already on the page. Tick this box to remove the option,<br />
');
define('LAN_LW_HELP_02','Define the words which become clickable links, or which display text on mouseover, here<br /><br />
<b><u>Word to Link</u></b><br />