]> git.mjollnir.org Git - s9y.git/commitdiff
Make 'target' attribute configurable
authorgarvinhicking <garvinhicking>
Thu, 24 Aug 2006 09:33:19 +0000 (09:33 +0000)
committergarvinhicking <garvinhicking>
Thu, 24 Aug 2006 09:33:19 +0000 (09:33 +0000)
plugins/serendipity_event_bbcode/lang_en.inc.php
plugins/serendipity_event_bbcode/serendipity_event_bbcode.php

index 37250ed3649786e8b32fe3950d28daa626f1fd70..934a39d5557f1367a813d4f81823c54059405c85 100644 (file)
@@ -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', '<a href="http://www.phpbb.com/phpBB/faq.php?mode=bbcode">BBCode</a> format allowed');
+@define('PLUGIN_EVENT_BBCODE_TARGET',   'Use target="blank" for links?');
 
 ?>
index c8a7cf903c63b353e97e30927b312e53712d70f2..5639b8615c7089e235d078e9b60cb1356111b031 100644 (file)
@@ -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 <xxx>...</xxx> 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
               '/(?<!\\\\)\[email(?::\w+)?='  . $pattern_mail . '\](.*?)\[\/email(?::\w+)?\]/si'               => "<a href=\"mailto:\\1\" class=\"bb-email\">\\2</a>",
 
               // [url]
-              '/(?<!\\\\)\[(google|search)\]'   . $pattern_query . '\[\/(google|search)\]/si'                 => "<a href=\"http://www.google.com/search?q=\\2\" target=\"_blank\" class=\"bb-url\">\\2</a>",
-              '/(?<!\\\\)\[url(?::\w+)?\]www\.' . $pattern_url   . '\[\/url(?::\w+)?\]/si'                    => "<a href=\"http://www.\\1\" target=\"_blank\" class=\"bb-url\">\\1</a>",
-              '/(?<!\\\\)\[url(?::\w+)?\]'      . $pattern_url   . '\[\/url(?::\w+)?\]/si'                    => "<a href=\"\\1\" target=\"_blank\" class=\"bb-url\">\\1</a>",
-              '/(?<!\\\\)\[url(?::\w+)?='       . $pattern_url   . '?\](.*?)\[\/url(?::\w+)?\]/si'            => "<a href=\"\\1\" target=\"_blank\" class=\"bb-url\">\\2</a>",
+              '/(?<!\\\\)\[(google|search)\]'   . $pattern_query . '\[\/(google|search)\]/si'                 => "<a href=\"http://www.google.com/search?q=\\2\" " . ($target ? "target=\"_blank\"" : "") . " class=\"bb-url\">\\2</a>",
+              '/(?<!\\\\)\[url(?::\w+)?\]www\.' . $pattern_url   . '\[\/url(?::\w+)?\]/si'                    => "<a href=\"http://www.\\1\" " . ($target ? "target=\"_blank\"" : "") . " class=\"bb-url\">\\1</a>",
+              '/(?<!\\\\)\[url(?::\w+)?\]'      . $pattern_url   . '\[\/url(?::\w+)?\]/si'                    => "<a href=\"\\1\" " . ($target ? "target=\"_blank\"" : "") . " class=\"bb-url\">\\1</a>",
+              '/(?<!\\\\)\[url(?::\w+)?='       . $pattern_url   . '?\](.*?)\[\/url(?::\w+)?\]/si'            => "<a href=\"\\1\" " . ($target ? "target=\"_blank\"" : "") . " class=\"bb-url\">\\2</a>",
 
               // [img]
               '/(?<!\\\\)\[img(?::\w+)?\]' . $pattern_url . '\[\/img(?::\w+)?\]/si'                           => "<img src=\"\\1\" alt=\"\\1\" class=\"bb-image\" />",
@@ -193,15 +206,15 @@ class serendipity_event_bbcode extends serendipity_event
               '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\*(?::\w+)?\](.*?)(?=(?:\s*<br\s*\/?>\s*)?\[\*|(?:\s*<br\s*\/?>\s*)?\[\/?list)/si' => "\n<li class=\"bb-listitem\">\\1</li>",
               '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list(:(?!u|o)\w+)?\](?:<br\s*\/?>)?/si'    => "\n</ul>",
               '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list:u(:\w+)?\](?:<br\s*\/?>)?/si'         => "\n</ul>",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list:o(:\w+)?\](?:<br\s*\/?>)?/si'         => "\n</ol>",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list:o(:\w+)?\](?:<br\s*\/?>)?/si'         => "\n</ul>",
               '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(:(?!u|o)\w+)?\]\s*(?:<br\s*\/?>)?/si'   => "\n<ul class=\"bb-list-unordered\">",
               '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list:u(:\w+)?\]\s*(?:<br\s*\/?>)?/si'        => "\n<ul class=\"bb-list-unordered\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list:o(:\w+)?\]\s*(?:<br\s*\/?>)?/si'        => "\n<ol class=\"bb-list-ordered\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=1\]\s*(?:<br\s*\/?>)?/si' => "\n<ol class=\"bb-list-ordered,bb-list-ordered-d\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=i\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-lr\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=I\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-ur\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=a\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-la\">",
-              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=A\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-ua\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list:o(:\w+)?\]\s*(?:<br\s*\/?>)?/si'        => "\n<ul class=\"bb-list-ordered\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=1\]\s*(?:<br\s*\/?>)?/si' => "\n<ul class=\"bb-list-ordered bb-list-ordered-d\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=i\]\s*(?:<br\s*\/?>)?/s'  => "\n<ul class=\"bb-list-ordered bb-list-ordered-lr\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=I\]\s*(?:<br\s*\/?>)?/s'  => "\n<ul class=\"bb-list-ordered bb-list-ordered-ur\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=a\]\s*(?:<br\s*\/?>)?/s'  => "\n<ul class=\"bb-list-ordered bb-list-ordered-la\">",
+              '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=A\]\s*(?:<br\s*\/?>)?/s'  => "\n<ul class=\"bb-list-ordered bb-list-ordered-ua\">",
 
               // 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;
+}
 <?php
                 return true;
                 break;