| 1 | diff -uNr a/mp-wp/manifest b/mp-wp/manifest | 
| 2 | --- a/mp-wp/manifest 4ad5c0b7eda9c670f311a23da92114ab10bf30b9990b46882047aea3ab569395f643cb4aa6144ee0ba74b9821df1e69b26d299c1f0e9c11631a78c46f95913bd | 
| 3 | +++ b/mp-wp/manifest e728e4d8266826d750b5ddfbb65612507575faeed2a38a52da45f8a4f9650b7a0793207e8542c1a4c38f5476f9ab10882179eeb99a2cdcba33e3ccbdcf103dcd | 
| 4 | @@ -5,3 +5,4 @@ | 
| 5 | 569483 mp-wp_remove-tinymce-and-other-crud billymg Remove tinymce, most of the importers, the self-update feature, and the google gears and press-this plugins | 
| 6 | 602064 mp-wp_apply-htmlspecialchars-to-post-edit-content billymg Run post content through htmlspecialchars() before loading into the post edit UI | 
| 7 | 605926 mp-wp_comments_filtering diana_coman Recent comments widget should show only people's comments (no track/pingbacks); theme default changed to show trackbacks/pingbacks as last/at the bottom in an article's comments list. | 
| 8 | +624366 mp-wp_add-embedded-vpatch-formatting billymg Add the ability to embed vpatches within article content. Embedded vpatch blocks will be formatted with diff syntax highlighting and anchored line numbers | 
| 9 | diff -uNr a/mp-wp/wp-content/plugins/footnotes.php b/mp-wp/wp-content/plugins/footnotes.php | 
| 10 | --- a/mp-wp/wp-content/plugins/footnotes.php 8e2449d4ac26ea05f080cec9d025ef8a8585221ee30da439b37ff1578d084e1c63cbe3f89e3d6868c19d0fa9f73a9af99b444251e7a854f6c87e316628d94859 | 
| 11 | +++ b/mp-wp/wp-content/plugins/footnotes.php 7498014fc2fd9fd154959bb316c49e2ba419e330ac958a6a19671610e35fb1f787e0190dc618ff7bb2cb13996efd09e395ff79032f175f628a71f3c44f9b5910 | 
| 12 | @@ -1,49 +1,28 @@ | 
| 13 | <?php | 
| 14 | /* | 
| 15 | -Plugin Name: WP-Footnotes | 
| 16 | -Plugin URI: http://www.elvery.net/drzax/more-things/wordpress-footnotes-plugin/ | 
| 17 | -Version: 4.2 | 
| 18 | -Description: Allows a user to easily add footnotes to a post. | 
| 19 | -Author: Simon Elvery | 
| 20 | -Author URI: http://www.elvery.net/drzax/ | 
| 21 | +Plugin Name: MP-WP-Content-Processing | 
| 22 | +Plugin URI: http://billymg.com/category/mp-wp/ | 
| 23 | +Description: Allows for the custom processing of article content. Currently supports footnotes and embedded vpatch snippets. | 
| 24 | +Author: billymg | 
| 25 | +Author URI: http://billymg.com | 
| 26 | */ | 
| 27 |  | 
| 28 | -/* | 
| 29 | - * This file is part of WP-Footnotes a plugin for Word Press | 
| 30 | - * Copyright (C) 2007 Simon Elvery | 
| 31 | - * | 
| 32 | - * This program is free software; you can redistribute it and/or | 
| 33 | - * modify it under the terms of the GNU General Public License | 
| 34 | - * as published by the Free Software Foundation; either version 2 | 
| 35 | - * of the License, or (at your option) any later version. | 
| 36 | - * | 
| 37 | - * This program is distributed in the hope that it will be useful, | 
| 38 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 39 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 40 | - * GNU General Public License for more details. | 
| 41 | - * | 
| 42 | - * You should have received a copy of the GNU General Public License | 
| 43 | - * along with this program; if not, write to the Free Software | 
| 44 | - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | 
| 45 | - */ | 
| 46 | - | 
| 47 | -// Some important constants | 
| 48 | -define('WP_FOOTNOTES_OPEN', " ((");  //You can change this if you really have to, but I wouldn't recommend it. | 
| 49 | -define('WP_FOOTNOTES_CLOSE', "))");  //Same with this one. | 
| 50 | -define('WP_FOOTNOTES_VERSION', '4.2'); | 
| 51 | - | 
| 52 | // Instantiate the class | 
| 53 | -$swas_wp_footnotes = new swas_wp_footnotes(); | 
| 54 | +$mp_wp_content_processing = new mp_wp_content_processing(); | 
| 55 |  | 
| 56 | // Encapsulate in a class | 
| 57 | -class swas_wp_footnotes { | 
| 58 | -	var $current_options; | 
| 59 | -	var $default_options; | 
| 60 | +class mp_wp_content_processing { | 
| 61 | +	const MP_WP_FOOTNOTES_OPEN = " (("; | 
| 62 | +	const MP_WP_FOOTNOTES_CLOSE = "))"; | 
| 63 | +	const MP_WP_CODEBLOCK_OPEN = "\[[0-9]\["; | 
| 64 | +	const MP_WP_CODEBLOCK_CLOSE = "]]"; | 
| 65 | + | 
| 66 | +	var $options; | 
| 67 |  | 
| 68 | /** | 
| 69 | * Constructor. | 
| 70 | */ | 
| 71 | -	function swas_wp_footnotes() { | 
| 72 | +	function mp_wp_content_processing() { | 
| 73 | // Define the implemented option styles | 
| 74 | $this->styles = array( | 
| 75 | 'decimal' => '1,2...10', | 
| 76 | @@ -56,7 +35,7 @@ | 
| 77 | ); | 
| 78 |  | 
| 79 | // Define default options | 
| 80 | -		$this->default_options = array('superscript'=>true, | 
| 81 | +		$this->options = array('superscript'=>true, | 
| 82 | 'pre_backlink'=>' [', | 
| 83 | 'backlink'=>'↩', | 
| 84 | 'post_backlink'=>']', | 
| 85 | @@ -66,7 +45,6 @@ | 
| 86 | 'post_identifier'=>'', | 
| 87 | 'pre_footnotes'=>'', | 
| 88 | 'post_footnotes'=>'', | 
| 89 | -									  'style_rules'=>'ol.footnotes{font-size:0.8em; color:#666666;}', | 
| 90 | 'no_display_home'=>false, | 
| 91 | 'no_display_archive'=>false, | 
| 92 | 'no_display_date'=>false, | 
| 93 | @@ -74,58 +52,98 @@ | 
| 94 | 'no_display_search'=>false, | 
| 95 | 'no_display_feed'=>false, | 
| 96 | 'combine_identical_notes'=>false, | 
| 97 | -									  'priority'=>11, | 
| 98 | -									  'version'=>WP_FOOTNOTES_VERSION); | 
| 99 | +									  'codeblocks_priority'=>9, // highest value that comes before wpautop filter | 
| 100 | +									  'footnotes_priority'=>11); | 
| 101 |  | 
| 102 | -		// Get the current settings or setup some defaults if needed | 
| 103 | -		if (!$this->current_options = get_option('swas_footnote_options')){ | 
| 104 | -			$this->current_options = $this->default_options; | 
| 105 | -			update_option('swas_footnote_options', $this->current_options); | 
| 106 | -		} else { | 
| 107 | -			// Set any unset options | 
| 108 | -			if ($this->current_options['version'] != WP_FOOTNOTES_VERSION) { | 
| 109 | -				foreach ($this->default_options as $key => $value) { | 
| 110 | -					if (!isset($this->current_options[$key])) { | 
| 111 | -						$this->current_options[$key] = $value; | 
| 112 | -					} | 
| 113 | -				} | 
| 114 | -				$this->current_options['version'] = WP_FOOTNOTES_VERSION; | 
| 115 | -				update_option('swas_footnote_options', $this->current_options); | 
| 116 | -			} | 
| 117 | +		// Hook me up | 
| 118 | +		add_action('the_content', array($this, 'process_codeblocks'), $this->options['codeblocks_priority']); | 
| 119 | +		add_action('the_content', array($this, 'process_footnotes'), $this->options['footnotes_priority']); | 
| 120 | +		add_action('wp_head', array($this, 'insert_styles')); | 
| 121 | +	} | 
| 122 | + | 
| 123 | +	/** | 
| 124 | +	 * Searches the text and apply markup to codeblocks. | 
| 125 | +	 * Adds line number links and diff syntax highlighting. | 
| 126 | +	 * @param $data string The content of the post. | 
| 127 | +	 * @return string The new content with formatted codeblocks. | 
| 128 | +	 */ | 
| 129 | +	function process_codeblocks($data) { | 
| 130 | +		global $post; | 
| 131 | + | 
| 132 | +		// Regex extraction of all codeblocks (or return if there are none) | 
| 133 | +		if ( | 
| 134 | +			!preg_match_all( | 
| 135 | +				"/(".self::MP_WP_CODEBLOCK_OPEN.")(.*)(".preg_quote(self::MP_WP_CODEBLOCK_CLOSE, '/').")/Us", | 
| 136 | +				$data, | 
| 137 | +				$codeblocks, | 
| 138 | +				PREG_SET_ORDER | 
| 139 | +			) | 
| 140 | +		) { | 
| 141 | +			return $data; | 
| 142 | } | 
| 143 |  | 
| 144 | -/* | 
| 145 | -		if (!empty($_POST['save_options'])){ | 
| 146 | -			$footnotes_options['superscript'] = (array_key_exists('superscript', $_POST)) ? true : false; | 
| 147 | -			$footnotes_options['pre_backlink'] = $_POST['pre_backlink']; | 
| 148 | -			$footnotes_options['backlink'] = $_POST['backlink']; | 
| 149 | -			$footnotes_options['post_backlink'] = $_POST['post_backlink']; | 
| 150 | -			$footnotes_options['pre_identifier'] = $_POST['pre_identifier']; | 
| 151 | -			$footnotes_options['list_style_type'] = $_POST['list_style_type']; | 
| 152 | -			$footnotes_options['post_identifier'] = $_POST['post_identifier']; | 
| 153 | -			$footnotes_options['list_style_symbol'] = $_POST['list_style_symbol']; | 
| 154 | -			$footnotes_options['pre_footnotes'] = stripslashes($_POST['pre_footnotes']); | 
| 155 | -			$footnotes_options['post_footnotes'] = stripslashes($_POST['post_footnotes']); | 
| 156 | -			$footnotes_options['style_rules'] = stripslashes($_POST['style_rules']); | 
| 157 | -			$footnotes_options['no_display_home'] = (array_key_exists('no_display_home', $_POST)) ? true : false; | 
| 158 | -			$footnotes_options['no_display_archive'] = (array_key_exists('no_display_archive', $_POST)) ? true : false; | 
| 159 | -			$footnotes_options['no_display_date'] = (array_key_exists('no_display_date', $_POST)) ? true : false; | 
| 160 | -			$footnotes_options['no_display_category'] = (array_key_exists('no_display_category', $_POST)) ? true : false; | 
| 161 | -			$footnotes_options['no_display_search'] = (array_key_exists('no_display_search', $_POST)) ? true : false; | 
| 162 | -			$footnotes_options['no_display_feed'] = (array_key_exists('no_display_feed', $_POST)) ? true : false; | 
| 163 | -			$footnotes_options['combine_identical_notes'] = (array_key_exists('combine_identical_notes', $_POST)) ? true : false; | 
| 164 | -			$footnotes_options['priority'] = $_POST['priority']; | 
| 165 | -			update_option('swas_footnote_options', $footnotes_options); | 
| 166 | -		}elseif(!empty($_POST['reset_options'])){ | 
| 167 | -			update_option('swas_footnote_options', ''); | 
| 168 | -			update_option('swas_footnote_options', $this->default_options); | 
| 169 | +		for ($i = 0; $i < count($codeblocks); $i++) { | 
| 170 | +			$codeblocks[$i]['snippet'] = $this->format_snippet($codeblocks[$i][2], substr($codeblocks[$i][1], 1, 1), $i+1); | 
| 171 | } | 
| 172 | -*/ | 
| 173 |  | 
| 174 | -		// Hook me up | 
| 175 | -		add_action('the_content', array($this, 'process'), $this->current_options['priority']); | 
| 176 | -		add_action('admin_menu', array($this, 'add_options_page')); 		// Insert the Admin panel. | 
| 177 | -		add_action('wp_head', array($this, 'insert_styles')); | 
| 178 | +		foreach ($codeblocks as $key => $value) { | 
| 179 | +			$data = substr_replace($data, $value['snippet'], strpos($data,$value[0]),strlen($value[0])); | 
| 180 | +		} | 
| 181 | + | 
| 182 | +		return $data; | 
| 183 | +	} | 
| 184 | + | 
| 185 | +	function format_snippet($snippet, $syntax_index, $snippet_number) { | 
| 186 | +		$highlighting_functions = array( | 
| 187 | +			'highlight_as_plain_text', | 
| 188 | +			'highlight_as_diff' | 
| 189 | +		); | 
| 190 | + | 
| 191 | +		if (is_null($highlighting_functions[$syntax_index])) { | 
| 192 | +			$syntax_index = 0; | 
| 193 | +		} | 
| 194 | + | 
| 195 | +		$code_lines = explode("\r\n", $snippet); | 
| 196 | + | 
| 197 | +		foreach ($code_lines as $idx => $line) { | 
| 198 | +			$line_number = sprintf('S%d-L%d', $snippet_number, $idx+1); | 
| 199 | +			$line_link = sprintf('<a href="#%s" name="%s">%d</a>', $line_number, $line_number, $idx+1); | 
| 200 | +			$line_open = sprintf('<tr><td class="line-number-column">%s</td><td class="content-column">', $line_link); | 
| 201 | +			$line_close = '</td></tr>'; | 
| 202 | + | 
| 203 | +			$code_lines[$idx] = $this->$highlighting_functions[$syntax_index]($line_open, $line, $line_close); | 
| 204 | +		} | 
| 205 | + | 
| 206 | +		$formatted_snippet = implode("\n", $code_lines); | 
| 207 | + | 
| 208 | +		$formatted_snippet = sprintf( | 
| 209 | +			'%s%s%s', | 
| 210 | +			'<div class="mp-wp-codeblock"><table cellpadding="0" cellspacing="0"><tbody>', | 
| 211 | +			$formatted_snippet, | 
| 212 | +			'</tbody></table></div>' | 
| 213 | +		); | 
| 214 | + | 
| 215 | +		return $formatted_snippet; | 
| 216 | +	} | 
| 217 | + | 
| 218 | +	function highlight_as_plain_text($line_open, $line, $line_close) { | 
| 219 | +		return sprintf('%s<span class="line-default">%s</span>%s', $line_open, $line, $line_close); | 
| 220 | +	} | 
| 221 | + | 
| 222 | +	function highlight_as_diff($line_open, $line, $line_close) { | 
| 223 | +		if (substr($line, 0, 5) == 'diff ') { | 
| 224 | +			$highlighted_line = sprintf('%s<span class="line-filename">%s</span>%s', $line_open, $line, $line_close); | 
| 225 | +		} elseif (substr($line, 0, 4) == '--- ' || substr($line, 0, 4) == '+++ ' || substr($line, 0, 3) == '@@ ') { | 
| 226 | +			$highlighted_line = sprintf('%s<span class="line-meta">%s</span>%s', $line_open, $line, $line_close); | 
| 227 | +		} elseif (substr($line, 0, 1) == '-') { | 
| 228 | +			$highlighted_line = sprintf('%s<span class="line-removed">%s</span>%s', $line_open, $line, $line_close); | 
| 229 | +		} elseif (substr($line, 0, 1) == '+') { | 
| 230 | +			$highlighted_line = sprintf('%s<span class="line-added">%s</span>%s', $line_open, $line, $line_close); | 
| 231 | +		}	else { | 
| 232 | +			$highlighted_line = sprintf('%s<span class="line-default">%s</span>%s', $line_open, $line, $line_close); | 
| 233 | +		} | 
| 234 | + | 
| 235 | +		return $highlighted_line; | 
| 236 | } | 
| 237 |  | 
| 238 | /** | 
| 239 | @@ -134,25 +152,25 @@ | 
| 240 | * @param $data string The content of the post. | 
| 241 | * @return string The new content with footnotes generated. | 
| 242 | */ | 
| 243 | -	function process($data) { | 
| 244 | +	function process_footnotes($data) { | 
| 245 | global $post; | 
| 246 |  | 
| 247 | // Check for and setup the starting number | 
| 248 | $start_number = (preg_match("|<!\-\-startnum=(\d+)\-\->|",$data,$start_number_array)==1) ? $start_number_array[1] : 1; | 
| 249 |  | 
| 250 | // Regex extraction of all footnotes (or return if there are none) | 
| 251 | -		if (!preg_match_all("/(".preg_quote(WP_FOOTNOTES_OPEN)."|<footnote>)(.*)(".preg_quote(WP_FOOTNOTES_CLOSE)."|<\/footnote>)/Us", $data, $identifiers, PREG_SET_ORDER)) { | 
| 252 | +		if (!preg_match_all("/(".preg_quote(self::MP_WP_FOOTNOTES_OPEN)."|<footnote>)(.*)(".preg_quote(self::MP_WP_FOOTNOTES_CLOSE)."|<\/footnote>)/Us", $data, $identifiers, PREG_SET_ORDER)) { | 
| 253 | return $data; | 
| 254 | } | 
| 255 |  | 
| 256 | // Check whether we are displaying them or not | 
| 257 | $display = true; | 
| 258 | -		if ($this->current_options['no_display_home'] && is_home()) $display = false; | 
| 259 | -		if ($this->current_options['no_display_archive'] && is_archive()) $display = false; | 
| 260 | -		if ($this->current_options['no_display_date'] && is_date()) $display = false; | 
| 261 | -		if ($this->current_options['no_display_category'] && is_category()) $display = false; | 
| 262 | -		if ($this->current_options['no_display_search'] && is_search()) $display = false; | 
| 263 | -		if ($this->current_options['no_display_feed'] && is_feed()) $display = false; | 
| 264 | +		if ($this->options['no_display_home'] && is_home()) $display = false; | 
| 265 | +		if ($this->options['no_display_archive'] && is_archive()) $display = false; | 
| 266 | +		if ($this->options['no_display_date'] && is_date()) $display = false; | 
| 267 | +		if ($this->options['no_display_category'] && is_category()) $display = false; | 
| 268 | +		if ($this->options['no_display_search'] && is_search()) $display = false; | 
| 269 | +		if ($this->options['no_display_feed'] && is_feed()) $display = false; | 
| 270 |  | 
| 271 | $footnotes = array(); | 
| 272 |  | 
| 273 | @@ -160,7 +178,7 @@ | 
| 274 | if ( array_key_exists(get_post_meta($post->ID, 'footnote_style', true), $this->styles) ) { | 
| 275 | $style = get_post_meta($post->ID, 'footnote_style', true); | 
| 276 | } else { | 
| 277 | -			$style = $this->current_options['list_style_type']; | 
| 278 | +			$style = $this->options['list_style_type']; | 
| 279 | } | 
| 280 |  | 
| 281 | // Create 'em | 
| 282 | @@ -175,7 +193,7 @@ | 
| 283 |  | 
| 284 |  | 
| 285 | // if we're combining identical notes check if we've already got one like this & record keys | 
| 286 | -			if ($this->current_options['combine_identical_notes']){ | 
| 287 | +			if ($this->options['combine_identical_notes']){ | 
| 288 | for ($j=0; $j<count($footnotes); $j++){ | 
| 289 | if ($footnotes[$j]['text'] == $identifiers[$i]['text']){ | 
| 290 | $identifiers[$i]['use_footnote'] = $j; | 
| 291 | @@ -206,12 +224,9 @@ | 
| 292 | $id_id = "identifier_".$key."_".$post->ID; | 
| 293 | $id_num = ($style == 'decimal') ? $value['use_footnote']+$start_number : $this->convert_num($value['use_footnote']+$start_number, $style, count($footnotes)); | 
| 294 | $id_href = ( ($use_full_link) ? get_permalink($post->ID) : '' ) . "#footnote_".$value['use_footnote']."_".$post->ID; | 
| 295 | - | 
| 296 | -//			$id_title = str_replace('"', """, htmlentities(strip_tags($value['text']), ENT_QUOTES, 'UTF-8')); | 
| 297 | - | 
| 298 | $id_title = str_replace('"', '`', strip_tags($value['text'])); | 
| 299 | -			$id_replace = $this->current_options['pre_identifier'].'<a href="'.$id_href.'" id="'.$id_id.'" class="footnote-link footnote-identifier-link" title="'.$id_title.'">'.$id_num.'</a>'.$this->current_options['post_identifier']; | 
| 300 | -			if ($this->current_options['superscript']) $id_replace = '<sup>'.$id_replace.'</sup>'; | 
| 301 | +			$id_replace = $this->options['pre_identifier'].'<a href="'.$id_href.'" id="'.$id_id.'" class="footnote-link footnote-identifier-link" title="'.$id_title.'">'.$id_num.'</a>'.$this->options['post_identifier']; | 
| 302 | +			if ($this->options['superscript']) $id_replace = '<sup>'.$id_replace.'</sup>'; | 
| 303 | if ($display) $data = substr_replace($data, $id_replace, strpos($data,$value[0]),strlen($value[0])); | 
| 304 | else $data = substr_replace($data, '', strpos($data,$value[0]),strlen($value[0])); | 
| 305 | } | 
| 306 | @@ -219,14 +234,14 @@ | 
| 307 | // Display footnotes | 
| 308 | if ($display) { | 
| 309 | $start = ($start_number != 1) ? 'start="'.$start_number.'" ' : ''; | 
| 310 | -			$data = $data.$this->current_options['pre_footnotes']; | 
| 311 | +			$data = $data.$this->options['pre_footnotes']; | 
| 312 |  | 
| 313 | $data = $data . '<ol '.$start.'class="footnotes">'; | 
| 314 | foreach ($footnotes as $key => $value) { | 
| 315 | $data = $data.'<li id="footnote_'.$key.'_'.$post->ID.'" class="footnote"'; | 
| 316 | if ($style == 'symbol') { | 
| 317 | $data = $data . ' style="list-style-type:none;"'; | 
| 318 | -				} elseif($style != $this->current_options['list_style_type']) { | 
| 319 | +				} elseif($style != $this->options['list_style_type']) { | 
| 320 | $data = $data . ' style="list-style-type:' . $style . ';"'; | 
| 321 | } | 
| 322 | $data = $data . '>'; | 
| 323 | @@ -236,56 +251,58 @@ | 
| 324 | $data = $data.$value['text']; | 
| 325 | if (!is_feed()){ | 
| 326 | foreach($value['identifiers'] as $identifier){ | 
| 327 | -						$data = $data.$this->current_options['pre_backlink'].'<a href="'.( ($use_full_link) ? get_permalink($post->ID) : '' ).'#identifier_'.$identifier.'_'.$post->ID.'" class="footnote-link footnote-back-link">'.$this->current_options['backlink'].'</a>'.$this->current_options['post_backlink']; | 
| 328 | +						$data = $data.$this->options['pre_backlink'].'<a href="'.( ($use_full_link) ? get_permalink($post->ID) : '' ).'#identifier_'.$identifier.'_'.$post->ID.'" class="footnote-link footnote-back-link">'.$this->options['backlink'].'</a>'.$this->options['post_backlink']; | 
| 329 | } | 
| 330 | } | 
| 331 | $data = $data . '</li>'; | 
| 332 | } | 
| 333 | -			$data = $data . '</ol>' . $this->current_options['post_footnotes']; | 
| 334 | +			$data = $data . '</ol>' . $this->options['post_footnotes']; | 
| 335 | } | 
| 336 | return $data; | 
| 337 | } | 
| 338 |  | 
| 339 | -	/** | 
| 340 | -	 * Really insert the options page. | 
| 341 | -	 */ | 
| 342 | -	function footnotes_options_page() { | 
| 343 | -		$this->current_options = get_option('swas_footnote_options'); | 
| 344 | -		foreach ($this->current_options as $key=>$setting) { | 
| 345 | -			$new_setting[$key] = htmlentities($setting); | 
| 346 | -		} | 
| 347 | -		$this->current_options = $new_setting; | 
| 348 | -		unset($new_setting); | 
| 349 | -		include (dirname(__FILE__) . '/options.php'); | 
| 350 | -	} | 
| 351 | - | 
| 352 | -	/** | 
| 353 | -	 * Insert the options page into the admin area. | 
| 354 | -	 */ | 
| 355 | -	function add_options_page() { | 
| 356 | -		// Add a new menu under Options: | 
| 357 | -		add_options_page('Footnotes', 'Footnotes', 8, __FILE__, array($this, 'footnotes_options_page')); | 
| 358 | -	} | 
| 359 | - | 
| 360 | -	function upgrade_post($data){ | 
| 361 | -		$data = str_replace('<footnote>',WP_FOOTNOTES_OPEN,$data); | 
| 362 | -		$data = str_replace('</footnote>',WP_FOOTNOTES_CLOSE,$data); | 
| 363 | -		return $data; | 
| 364 | -	} | 
| 365 | - | 
| 366 | -	function insert_styles(){ | 
| 367 | +	function insert_styles() { | 
| 368 | ?> | 
| 369 | <style type="text/css"> | 
| 370 | -			<?php if ($this->current_options['list_style_type'] != 'symbol'): ?> | 
| 371 | -			ol.footnotes li {list-style-type:<?php echo $this->current_options['list_style_type']; ?>;} | 
| 372 | +			ol.footnotes { font-size: 0.8em; color: #666666; } | 
| 373 | +			a.footnote-link, | 
| 374 | +			td.line-number-column { | 
| 375 | +				-moz-user-select: none; | 
| 376 | +				-webkit-user-select: none; | 
| 377 | +				user-select: none; | 
| 378 | +			} | 
| 379 | +			div.mp-wp-codeblock { | 
| 380 | +				background: none; | 
| 381 | +				font-family: monospace; | 
| 382 | +				color: #333; | 
| 383 | +				border: 1px solid #ddd; | 
| 384 | +				padding: 0; | 
| 385 | +				overflow: auto; | 
| 386 | +			} | 
| 387 | +			td.line-number-column { background: #f5f6f7; text-align: right; vertical-align: top; } | 
| 388 | +			td.line-number-column a { color: #555; padding: 0 5px; } | 
| 389 | +			td.content-column { | 
| 390 | +				padding-left: 10px; | 
| 391 | +				white-space: pre-wrap; | 
| 392 | +				tab-size: 4; | 
| 393 | +				-moz-tab-size: 4; | 
| 394 | +				max-width: 670px; /* adjust as necessary to fit your blog's viewport */ | 
| 395 | +			} | 
| 396 | +			span.line-filename { font-weight: bold; } | 
| 397 | +			span.line-meta { color: #999; word-wrap: break-word; } | 
| 398 | +			span.line-added { color: green; } | 
| 399 | +			span.line-removed { color:red; } | 
| 400 | + | 
| 401 | +			<?php if ($this->options['list_style_type'] != 'symbol'): ?> | 
| 402 | +			ol.footnotes li { list-style-type: <?php echo $this->options['list_style_type']; ?>; } | 
| 403 | <?php endif; ?> | 
| 404 | -			<?php echo $this->current_options['style_rules'];?> | 
| 405 | + | 
| 406 | </style> | 
| 407 | <?php | 
| 408 | } | 
| 409 |  | 
| 410 |  | 
| 411 | -	function convert_num ($num, $style, $total){ | 
| 412 | +	function convert_num ($num, $style, $total) { | 
| 413 | switch ($style) { | 
| 414 | case 'decimal-leading-zero' : | 
| 415 | $width = max(2, strlen($total)); | 
| 416 | @@ -301,7 +318,7 @@ | 
| 417 | case 'symbol' : | 
| 418 | $sym = ''; | 
| 419 | for ($i = 0; $i<$num; $i++) { | 
| 420 | -					$sym .= $this->current_options['list_style_symbol']; | 
| 421 | +					$sym .= $this->options['list_style_symbol']; | 
| 422 | } | 
| 423 | return $sym; | 
| 424 | } | 
| 425 | @@ -318,7 +335,7 @@ | 
| 426 | * @param string $case Upper or lower case. | 
| 427 | * @return string The roman numeral | 
| 428 | */ | 
| 429 | -	function roman($num, $case= 'upper'){ | 
| 430 | +	function roman($num, $case= 'upper') { | 
| 431 | $num = (int) $num; | 
| 432 | $conversion = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1); | 
| 433 | $roman = ''; | 
| 434 | @@ -331,7 +348,7 @@ | 
| 435 | return ($case == 'lower') ? strtolower($roman) : $roman; | 
| 436 | } | 
| 437 |  | 
| 438 | -	function alpha($num, $case='upper'){ | 
| 439 | +	function alpha($num, $case='upper') { | 
| 440 | $j = 1; | 
| 441 | for ($i = 'A'; $i <= 'ZZ'; $i++){ | 
| 442 | if ($j == $num){ | 
| 443 |  |