From dd4ec6ddbb474df19af388c4724543327b9957f4 Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Tue, 21 Feb 2006 12:36:55 +0000 Subject: [PATCH] Apply markup plugins per-entry. --- docs/NEWS | 3 + .../serendipity_event_bbcode.php | 6 +- .../serendipity_event_contentrewrite.php | 6 +- .../serendipity_event_emoticate.php | 6 +- .../lang_en.inc.php | 2 +- .../serendipity_event_entryproperties.php | 80 ++++++++++++++++--- .../serendipity_event_nl2br.php | 7 +- .../serendipity_event_s9ymarkup.php | 6 +- .../serendipity_event_searchhighlight.php | 7 +- .../serendipity_event_textile.php | 6 +- .../serendipity_event_textwiki.php | 6 +- .../serendipity_event_trackexits.php | 6 +- .../serendipity_event_xhtmlcleanup.php | 6 +- 13 files changed, 116 insertions(+), 31 deletions(-) diff --git a/docs/NEWS b/docs/NEWS index b921a07..820ed30 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,9 @@ Version 1.1-alpha1() ------------------------------------------------------------------------ + * Allow entryproperties plugin to define which markup plugins are + applied per-entry (garvinhicking) + * Added links to view an entry in reasonable places (comments / entry overview) (garvinhicking) diff --git a/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php b/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php index f9994c3..805c649 100644 --- a/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php +++ b/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php @@ -19,7 +19,7 @@ class serendipity_event_bbcode extends serendipity_event $propbag->add('description', PLUGIN_EVENT_BBCODE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Jez Hancock, Garvin Hicking'); - $propbag->add('version', '2.01'); + $propbag->add('version', '2.02'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -227,7 +227,9 @@ class serendipity_event_bbcode extends serendipity_event case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = $this->bbcode($eventData[$element]); } diff --git a/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php b/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php index 9db6f4c..6467a93 100644 --- a/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php +++ b/plugins/serendipity_event_contentrewrite/serendipity_event_contentrewrite.php @@ -29,7 +29,7 @@ class serendipity_event_contentrewrite extends serendipity_event $propbag->add('description', PLUGIN_EVENT_CONTENTREWRITE_DESCRIPTION); $propbag->add('stackable', true); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -253,7 +253,9 @@ class serendipity_event_contentrewrite extends serendipity_event // \1 and \3 are the prepend/append strings (usually whitespaces) and $new containing the new value foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = preg_replace($regex, '\1' . $new . '\3', $eventData[$element]); } diff --git a/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php b/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php index 80d1b4a..bd3472b 100644 --- a/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php +++ b/plugins/serendipity_event_emoticate/serendipity_event_emoticate.php @@ -20,7 +20,7 @@ class serendipity_event_emoticate extends serendipity_event $propbag->add('description', PLUGIN_EVENT_EMOTICATE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.2'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -166,7 +166,9 @@ class serendipity_event_emoticate extends serendipity_event case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = &$eventData[$temp['element']]; foreach ($this->getEmoticons() as $key => $value) { diff --git a/plugins/serendipity_event_entryproperties/lang_en.inc.php b/plugins/serendipity_event_entryproperties/lang_en.inc.php index 100afff..0b4cb83 100644 --- a/plugins/serendipity_event_entryproperties/lang_en.inc.php +++ b/plugins/serendipity_event_entryproperties/lang_en.inc.php @@ -23,7 +23,6 @@ @define('PLUGIN_EVENT_ENTRYPROPERTIES_CACHE_DONE', 'Entry caching completed.'); @define('PLUGIN_EVENT_ENTRYPROPERTIES_CACHE_ABORTED', 'Entry caching ABORTED.'); @define('PLUGIN_EVENT_ENTRYPROPERTIES_CACHE_TOTAL', ' (totalling %d entries)...'); -@define('PLUGIN_EVENT_ENTRYPROPERTIES_NL2BR', 'Disable nl2br'); @define('PLUGIN_EVENT_ENTRYPROPERTIES_NO_FRONTPAGE', 'Hide from article overview / frontpage'); @define('PLUGIN_EVENT_ENTRYPROPERTIES_GROUPS', 'Use group-based restrictions'); @define('PLUGIN_EVENT_ENTRYPROPERTIES_GROUPS_DESC', 'If enabled, you can define which users of a usergroup may be able to read entries. This option has a large impact on the performance of your article overview. Only enable this if you are really going to use this feature.'); @@ -37,4 +36,5 @@ @define('PLUGIN_EVENT_ENTRYPROPERTIES_CUSTOMFIELDS_DESC2', 'Here you can enter a list of commaseparated field names that you can use to enter for every entry - do not use special characters or spaces for those fieldnames. Example: "Customfield1, Customfield2". ' . PLUGIN_EVENT_ENTRYPROPERTIES_CUSTOMFIELDS_DESC1); @define('PLUGIN_EVENT_ENTRYPROPERTIES_CUSTOMFIELDS_DESC3', 'The list of available custom fields can be changed in the plugin configuration.'); +@define('PLUGIN_EVENT_ENTRYPROPERTIES_DISABLE_MARKUP', 'Disable Markup plugins for this entry:'); ?> diff --git a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php index 6367fdb..50aeda3 100644 --- a/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php +++ b/plugins/serendipity_event_entryproperties/serendipity_event_entryproperties.php @@ -21,7 +21,7 @@ class serendipity_event_entryproperties extends serendipity_event $propbag->add('description', PLUGIN_EVENT_ENTRYPROPERTIES_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.8'); + $propbag->add('version', '1.9'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -42,7 +42,8 @@ class serendipity_event_entryproperties extends serendipity_event 'backend_cache_purge' => true, 'backend_plugins_new_instance' => true, 'frontend_entryproperties_query' => true, - 'frontend_entries_rss' => true + 'frontend_entries_rss' => true, + 'backend_entry_presave' => true )); $propbag->add('groups', array('BACKEND_EDITOR')); $propbag->add('configuration', array('cache', 'use_groups', 'use_users', 'default_read', 'customfields')); @@ -135,7 +136,7 @@ class serendipity_event_entryproperties extends serendipity_event static $supported_properties = null; if ($supported_properties === null) { - $supported_properties = array('is_sticky', 'access', 'access_groups', 'access_users', 'cache_body', 'cache_extended', 'no_nl2br', 'no_frontpage', 'hiderss'); + $supported_properties = array('is_sticky', 'access', 'access_groups', 'access_users', 'cache_body', 'cache_extended', 'no_frontpage', 'hiderss'); $fields = explode(',', trim($this->get_config('customfields'))); if (is_array($fields) && count($fields) > 0) { @@ -160,12 +161,36 @@ class serendipity_event_entryproperties extends serendipity_event return $and; } + /* + * This function converts specific property fields so that they are + * available natively to other plugins/templates. + */ + function applyProperties(&$properties) { + global $serendipity; + + if (is_array($properties['disable_markups'])) { + foreach($properties['disable_markups'] AS $idx => $instance) { + $properties['disable_markup_' . $instance] = $instance; + } + } + } + function addProperties(&$properties, &$eventData) { global $serendipity; // Get existing data $property = serendipity_fetchEntryProperties($eventData['id']); $supported_properties = serendipity_event_entryproperties::getSupportedProperties(); + // Special case for disable markups. + if (is_array($properties['disable_markups'])) { + $q = "DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE entryid = " . (int)$eventData['id'] . " AND property LIKE 'ep_disable_markup_%'"; + serendipity_db_query($q); + + foreach($properties['disable_markups'] AS $idx => $instance) { + $supported_properties[] = 'disable_markup_' . $instance; + } + } + foreach($supported_properties AS $prop_key) { $prop_val = (isset($properties[$prop_key]) ? $properties[$prop_key] : null); $prop_key = 'ep_' . $prop_key; @@ -204,10 +229,6 @@ class serendipity_event_entryproperties extends serendipity_event || (isset($serendipity['POST']['properties']['is_sticky']) && serendipity_db_bool($serendipity['POST']['properties']['is_sticky'])) ? 'checked="checked"' : ''; - $nl2br = (isset($eventData['properties']['ep_no_nl2br']) && serendipity_db_bool($eventData['properties']['ep_no_nl2br'])) - || (isset($serendipity['POST']['properties']['no_nl2br']) && serendipity_db_bool($serendipity['POST']['properties']['no_nl2br'])) - ? 'checked="checked"' - : ''; $no_frontpage = (isset($eventData['properties']['ep_no_frontpage']) && serendipity_db_bool($eventData['properties']['ep_no_frontpage'])) || (isset($serendipity['POST']['properties']['no_frontpage']) && serendipity_db_bool($serendipity['POST']['properties']['no_frontpage'])) @@ -255,11 +276,6 @@ class serendipity_event_entryproperties extends serendipity_event
/>
- - /> -
- - />
@@ -323,6 +339,38 @@ class serendipity_event_entryproperties extends serendipity_event +
+
+
+
+ +
+
+ get_config('customfields')); if (!empty($fields)) { @@ -371,6 +419,7 @@ class serendipity_event_entryproperties extends serendipity_event } return true; break; + case 'backend_import_entry': //TODO: (ph) Maybe handle caching? if (is_array($addData) && !$addData['nl2br']){ @@ -379,6 +428,7 @@ class serendipity_event_entryproperties extends serendipity_event $this->addProperties($props, $eventData); } break; + case 'backend_sidebar_entries_event_display_buildcache': if ($is_cache) { $per_fetch = 25; @@ -457,6 +507,12 @@ class serendipity_event_entryproperties extends serendipity_event serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE property LIKE 'ep_cache_%'"); break; + case 'backend_entry_presave': + if (is_array($serendipity['POST']['properties'])) { + $this->applyProperties($serendipity['POST']['properties']); + } + break; + case 'backend_publish': case 'backend_save': if (!isset($serendipity['POST']['properties']) || !is_array($serendipity['POST']['properties']) || !isset($eventData['id'])) { diff --git a/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php b/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php index 60db21e..c686219 100644 --- a/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php +++ b/plugins/serendipity_event_nl2br/serendipity_event_nl2br.php @@ -20,7 +20,7 @@ class serendipity_event_nl2br extends serendipity_event $propbag->add('description', PLUGIN_EVENT_NL2BR_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.3'); + $propbag->add('version', '1.4'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -89,8 +89,11 @@ class serendipity_event_nl2br extends serendipity_event foreach ($this->markup_elements as $temp) { if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance]) && !$eventData['properties']['ep_no_nl2br'] && - !isset($serendipity['POST']['properties']['no_nl2br'])) { + !isset($serendipity['POST']['properties']['ep_no_nl2br'])) { + $element = $temp['element']; $eventData[$element] = nl2br($eventData[$element]); } diff --git a/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php b/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php index 971d414..a6294b9 100644 --- a/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php +++ b/plugins/serendipity_event_s9ymarkup/serendipity_event_s9ymarkup.php @@ -20,7 +20,7 @@ class serendipity_event_s9ymarkup extends serendipity_event $propbag->add('description', PLUGIN_EVENT_S9YMARKUP_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -90,7 +90,9 @@ class serendipity_event_s9ymarkup extends serendipity_event case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = $this->_s9y_markup($eventData[$element]); } diff --git a/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php b/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php index 5adb101..d5aa86f 100644 --- a/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php +++ b/plugins/serendipity_event_searchhighlight/serendipity_event_searchhighlight.php @@ -24,7 +24,7 @@ class serendipity_event_searchhighlight extends serendipity_event $propbag->add('description', PLUGIN_EVENT_SEARCHHIGHLIGHT_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Tom Sommer'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -192,6 +192,11 @@ class serendipity_event_searchhighlight extends serendipity_event continue; } + if ($eventData['properties']['ep_disable_markup_' . $this->instance] || + isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { + continue; + } + $element = &$eventData[$temp['element']]; foreach ( $queries as $word ) { diff --git a/plugins/serendipity_event_textile/serendipity_event_textile.php b/plugins/serendipity_event_textile/serendipity_event_textile.php index cfe470e..c28f22b 100644 --- a/plugins/serendipity_event_textile/serendipity_event_textile.php +++ b/plugins/serendipity_event_textile/serendipity_event_textile.php @@ -22,7 +22,7 @@ class serendipity_event_textile extends serendipity_event $propbag->add('description', PLUGIN_EVENT_TEXTILE_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.1'); + $propbag->add('version', '1.2'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -103,6 +103,10 @@ class serendipity_event_textile extends serendipity_event foreach ($this->markup_elements as $temp) { if (serendipity_db_bool($this->get_config($temp['name'], true))) { + if ($eventData['properties']['ep_disable_markup_' . $this->instance] || + isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { + continue; + } $element = $temp['element']; /* find all the tags and store them in $blocks */ diff --git a/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php b/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php index 699f5e7..0342dbc 100644 --- a/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php +++ b/plugins/serendipity_event_textwiki/serendipity_event_textwiki.php @@ -461,7 +461,7 @@ class serendipity_event_textwiki extends serendipity_event $propbag->add('description', PLUGIN_EVENT_TEXTWIKI_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Tobias Schlitt'); - $propbag->add('version', '1.2'); + $propbag->add('version', '1.3'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -585,7 +585,9 @@ class serendipity_event_textwiki extends serendipity_event switch($event) { case 'frontend_display': foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = $this->wiki->transform($eventData[$element]); } diff --git a/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php b/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php index 14b05f3..545de7e 100644 --- a/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php +++ b/plugins/serendipity_event_trackexits/serendipity_event_trackexits.php @@ -21,7 +21,7 @@ class serendipity_event_trackexits extends serendipity_event $propbag->add('description', PLUGIN_EVENT_TRACKBACK_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); - $propbag->add('version', '1.5'); + $propbag->add('version', '1.6'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -117,7 +117,9 @@ class serendipity_event_trackexits extends serendipity_event } foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $eventData[$element] = preg_replace_callback( diff --git a/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php b/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php index e9c1dd1..35621f4 100644 --- a/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php +++ b/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php @@ -32,7 +32,7 @@ class serendipity_event_xhtmlcleanup extends serendipity_event $propbag->add('description', PLUGIN_EVENT_XHTMLCLEANUP_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); - $propbag->add('version', '1.4'); + $propbag->add('version', '1.5'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -138,7 +138,9 @@ class serendipity_event_xhtmlcleanup extends serendipity_event case 'frontend_display': $this->cleanup_parse = serendipity_db_bool($this->get_config('xhtml_parse')); foreach ($this->markup_elements as $temp) { - if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) { + if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) && + !$eventData['properties']['ep_disable_markup_' . $this->instance] && + !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) { $element = $temp['element']; $this->cleanup_tag = 'IMG'; $this->cleanup_checkfor = 'ALT'; -- 2.39.5