From 837acd31ced5ebf63037f049041a34f810e17318 Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Thu, 24 Aug 2006 09:33:19 +0000 Subject: [PATCH] Make 'target' attribute configurable --- .../serendipity_event_bbcode/lang_en.inc.php | 1 + .../serendipity_event_bbcode.php | 50 ++++++++++++++----- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/plugins/serendipity_event_bbcode/lang_en.inc.php b/plugins/serendipity_event_bbcode/lang_en.inc.php index 37250ed..934a39d 100644 --- a/plugins/serendipity_event_bbcode/lang_en.inc.php +++ b/plugins/serendipity_event_bbcode/lang_en.inc.php @@ -9,5 +9,6 @@ @define('PLUGIN_EVENT_BBCODE_NAME', 'Markup: BBCode'); @define('PLUGIN_EVENT_BBCODE_DESC', 'Markup text using BBCode'); @define('PLUGIN_EVENT_BBCODE_TRANSFORM', 'BBCode format allowed'); +@define('PLUGIN_EVENT_BBCODE_TARGET', 'Use target="blank" for links?'); ?> diff --git a/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php b/plugins/serendipity_event_bbcode/serendipity_event_bbcode.php index c8a7cf9..5639b86 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.05'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', @@ -50,6 +50,7 @@ class serendipity_event_bbcode extends serendipity_event $conf_array = array(); $conf_array[] = 'info'; + $cond_array[] = 'target'; foreach($this->markup_elements as $element) { $conf_array[] = $element['name']; } @@ -115,6 +116,12 @@ class serendipity_event_bbcode extends serendipity_event function introspect_config_item($name, &$propbag) { switch($name) { + case 'target': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_BBCODE_TARGET); + $propbag->add('default', 'false'); + break; + case 'info': $propbag->add('type', 'info'); $propbag->add('description', PLUGIN_EVENT_BBCODE_TRANSFORM); @@ -154,6 +161,12 @@ class serendipity_event_bbcode extends serendipity_event // Disallow possibly evil HTML characters which may lead to Javascript XSS: '"(); static $pattern_query = '([^"\'\(\);]+?)'; + static $target = null; + + if ($target === null) { + $target = serendipity_db_bool($this->get_config('target')); + } + // Note: // * Anything between ... tags will be caught by htmlspecialchars() and disallows custom HTML tags. // * (?::\w+)? means "non capturing" match on any word character. @@ -176,10 +189,10 @@ class serendipity_event_bbcode extends serendipity_event '/(? "\\2", // [url] - '/(? "\\2", - '/(? "\\1", - '/(? "\\1", - '/(? "\\2", + '/(? "\\2", + '/(? "\\1", + '/(? "\\1", + '/(? "\\2", // [img] '/(? "\"\\1\"", @@ -193,15 +206,15 @@ class serendipity_event_bbcode extends serendipity_event '/(?\s*)?\[\*(?::\w+)?\](.*?)(?=(?:\s*\s*)?\[\*|(?:\s*\s*)?\[\/?list)/si' => "\n
  • \\1
  • ", '/(?\s*)?\[\/list(:(?!u|o)\w+)?\](?:)?/si' => "\n", '/(?\s*)?\[\/list:u(:\w+)?\](?:)?/si' => "\n", - '/(?\s*)?\[\/list:o(:\w+)?\](?:)?/si' => "\n", + '/(?\s*)?\[\/list:o(:\w+)?\](?:)?/si' => "\n", '/(?\s*)?\[list(:(?!u|o)\w+)?\]\s*(?:)?/si' => "\n
      ", '/(?\s*)?\[list:u(:\w+)?\]\s*(?:)?/si' => "\n
        ", - '/(?\s*)?\[list:o(:\w+)?\]\s*(?:)?/si' => "\n
          ", - '/(?\s*)?\[list(?::o)?(:\w+)?=1\]\s*(?:)?/si' => "\n
            ", - '/(?\s*)?\[list(?::o)?(:\w+)?=i\]\s*(?:)?/s' => "\n
              ", - '/(?\s*)?\[list(?::o)?(:\w+)?=I\]\s*(?:)?/s' => "\n
                ", - '/(?\s*)?\[list(?::o)?(:\w+)?=a\]\s*(?:)?/s' => "\n
                  ", - '/(?\s*)?\[list(?::o)?(:\w+)?=A\]\s*(?:)?/s' => "\n
                    ", + '/(?\s*)?\[list:o(:\w+)?\]\s*(?:)?/si' => "\n
                      ", + '/(?\s*)?\[list(?::o)?(:\w+)?=1\]\s*(?:)?/si' => "\n
                        ", + '/(?\s*)?\[list(?::o)?(:\w+)?=i\]\s*(?:)?/s' => "\n
                          ", + '/(?\s*)?\[list(?::o)?(:\w+)?=I\]\s*(?:)?/s' => "\n
                            ", + '/(?\s*)?\[list(?::o)?(:\w+)?=a\]\s*(?:)?/s' => "\n
                              ", + '/(?\s*)?\[list(?::o)?(:\w+)?=A\]\s*(?:)?/s' => "\n
                                ", // escaped tags like \[b], \[color], \[url], ... '/\\\\(\[\/?\w+(?::\w+)*\])/' => "\\1" @@ -227,7 +240,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]); } @@ -267,6 +282,15 @@ class serendipity_event_bbcode extends serendipity_event background-color: #DDDDDD; padding: 10px; } +.bb-list-ordered-d { + list-style-type: decimal; +} +.bb-list-ordered-la { + list-style-type: lower-alpha; +} +.bb-list-ordered-ua { + list-style-type: upper-alpha; +}