PluginProbe
Easy Footnotes / 1.0.10
Easy Footnotes v1.0.10
trunk 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.2 All 32 releases
← All changes | easy-footnotes.php +69 -182 1.1.2 → 1.0.10 View file →
@@ -1,97 +1,60 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: Easy Footnotes
4 - * Plugin URI: https://jasonyingling.me/easy-footnotes-wordpress/
4 + * Plugin URI: http://jasonyingling.me/easy-footnotes-wordpress/
5 5 * Description: Easily add footnotes to your posts with a simple shortcode.
6 - * Version: 1.1.2
6 + * Version: 1.0.10
7 7 * Author: Jason Yingling
8 - * Author URI: https://jasonyingling.me
8 + * Author URI: http://jasonyingling.me
9 9 * License: GPL2
10 - *
11 - * @package easy-footnotes
12 10 */
13 11
14 -/*
15 - Copyright 2018 Jason Yingling (email : [email protected])
12 + /* Copyright 2017 Jason Yingling (email : [email protected])
16 13
17 - This program is free software; you can redistribute it and/or modify
18 - it under the terms of the GNU General Public License, version 2, as
19 - published by the Free Software Foundation.
14 + This program is free software; you can redistribute it and/or modify
15 + it under the terms of the GNU General Public License, version 2, as
16 + published by the Free Software Foundation.
20 17
21 - This program is distributed in the hope that it will be useful,
22 - but WITHOUT ANY WARRANTY; without even the implied warranty of
23 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 - GNU General Public License for more details.
18 + This program is distributed in the hope that it will be useful,
19 + but WITHOUT ANY WARRANTY; without even the implied warranty of
20 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 + GNU General Public License for more details.
25 22
26 - You should have received a copy of the GNU General Public License
27 - along with this program; if not, write to the Free Software
28 - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 + You should have received a copy of the GNU General Public License
24 + along with this program; if not, write to the Free Software
25 + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 26 */
30 -/**
31 - * The Easy Footnotes class. In camel case. Because I didn't follow WPCS way back when.
32 - */
27 +
33 28 class easyFootnotes {
34 29
35 - /**
36 - * Add label option using add_option if it does not already exist.
37 - *
38 - * @var array $footnotes An array for the footnotes to be stored.
39 - */
40 - public $footnotes = array();
30 + // Add label option using add_option if it does not already exist
31 + public $footnotes = array();
41 32 public $footnoteCount = 0;
42 33 public $prevPost;
43 - public $footnoteOptions;
44 34
45 - private $footnoteSettings;
46 -
47 - /**
48 - * Constructing the initial plugin options, shortcodes, and hooks.
49 - */
50 35 public function __construct() {
51 - $this->footnoteSettings = array(
52 - 'footnoteLabel' => __( 'Footnotes', 'easy-footnotes' ),
53 - 'useLabel' => false,
54 - 'hide_easy_footnote_after_posts' => false,
55 - 'show_easy_footnote_on_front' => false,
36 + $footnoteSettings = array(
37 + 'footnoteLabel' => 'Footnotes',
38 + 'useLabel' => false,
56 39 );
57 40
58 - add_option( 'easy_footnotes_options', $this->footnoteSettings );
59 - add_shortcode( 'note', array( $this, 'easy_footnote_shortcode' ) );
60 - add_shortcode( 'efn_note', array( $this, 'easy_footnote_shortcode' ) );
61 - add_filter( 'the_content', array( $this, 'easy_footnote_after_content' ), 20 );
62 - add_filter( 'the_content', array( $this, 'easy_footnote_reset' ), 999 );
63 - add_action( 'wp_enqueue_scripts', array( $this, 'register_qtip_scripts' ) );
64 - add_action( 'admin_menu', array( $this, 'easy_footnotes_admin_actions' ) );
65 - add_action( 'admin_enqueue_scripts', array( $this, 'easy_footnotes_admin_scripts' ) );
66 -
67 - $this->footnoteOptions = get_option( 'easy_footnotes_options' );
41 + add_option('easy_footnotes_options', $footnoteSettings);
42 + add_shortcode( 'note', array($this, 'easy_footnote_shortcode') );
43 + add_filter('the_content', array($this, 'easy_footnote_after_content'), 20);
44 + add_action('wp_enqueue_scripts', array($this, 'register_qtip_scripts'));
45 + add_action('admin_menu', array($this, 'easy_footnotes_admin_actions'));
68 46 }
69 47
70 - /**
71 - * Registering the scripts and styles used by jQuery qTip.
72 - */
73 48 public function register_qtip_scripts() {
74 - wp_register_script( 'imagesloaded', plugins_url( '/assets/qtip/imagesloaded.pkgd.min.js', __FILE__ ), array(), '3.1.8', true );
75 - wp_register_script( 'qtip', plugins_url( '/assets/qtip/jquery.qtip.min.js', __FILE__ ), array( 'jquery', 'imagesloaded' ), '3.0.3', true );
76 - wp_register_script( 'qtipcall', plugins_url( '/assets/qtip/jquery.qtipcall.js', __FILE__ ), array( 'jquery', 'qtip' ), '1.1.0', true );
77 - wp_register_style( 'qtipstyles', plugins_url( '/assets/qtip/jquery.qtip.min.css', __FILE__ ), array(), '3.0.3', false );
78 - wp_register_style( 'easyfootnotescss', plugins_url( '/assets/easy-footnotes.css', __FILE__ ), array(), '1.1.0', false );
49 + wp_register_script( 'imagesloaded', plugins_url( '/assets/qtip/imagesloaded.pkgd.min.js' , __FILE__ ), null, false, true );
50 + wp_register_script( 'qtip', plugins_url( '/assets/qtip/jquery.qtip.min.js' , __FILE__ ), array('jquery', 'imagesloaded'), false, true );
51 + wp_register_script( 'qtipcall', plugins_url( '/assets/qtip/jquery.qtipcall.js' , __FILE__ ), array('jquery', 'qtip'), false, true );
52 + wp_register_style( 'qtipstyles', plugins_url( '/assets/qtip/jquery.qtip.min.css' , __FILE__ ), null, false, false );
53 + wp_register_style( 'easyfootnotescss', plugins_url( '/assets/easy-footnotes.css' , __FILE__ ), null, false, false );
79 54 }
80 55
81 - /**
82 - * Create the Easy Footnotes shortcode.
83 - *
84 - * @param array $atts Shortcode attributes.
85 - * @param string $content Content within the shortcode.
86 - */
87 - public function easy_footnote_shortcode( $atts, $content = null ) {
88 - if ( isset( $this->footnoteOptions['show_easy_footnote_on_front'] ) && $this->footnoteOptions['show_easy_footnote_on_front'] ) {
89 - $efn_show_on_front = is_front_page();
90 - } else {
91 - $efn_show_on_front = false;
92 - }
93 -
56 + public function easy_footnote_shortcode($atts, $content = null) {
94 57 wp_enqueue_style( 'qtipstyles' );
95 58 wp_enqueue_style( 'easyfootnotescss' );
96 59 wp_enqueue_script( 'imagesloaded' );
97 60 wp_enqueue_script( 'qtip' );
@@ -97,155 +60,79 @@
97 60 wp_enqueue_script( 'qtip' );
98 61 wp_enqueue_script( 'qtipcall' );
99 62 wp_enqueue_style( 'dashicons' );
100 63
101 - $atts = shortcode_atts(
102 - array(
103 - // Future home of shortcode atts.
104 - ),
105 - $atts
106 - );
64 + extract (shortcode_atts(array(
65 + ), $atts));
107 66
108 - $post_id = get_the_ID();
67 + $this->easy_footnote_count($this->footnoteCount, get_the_ID());
68 + $this->easy_footnote_content($content);
109 69
110 - $content = do_shortcode( $content );
111 -
112 - $count = $this->footnoteCount;
113 -
114 - // Increment the counter.
115 - $count++;
116 -
117 - // Set the footnoteCount (This whole process needs reworked).
118 - $this->footnoteCount = $count;
119 -
120 - $this->easy_footnote_content( $content );
121 -
122 - if ( ( is_singular() || $efn_show_on_front ) && is_main_query() ) {
123 - $footnoteLink = '#easy-footnote-bottom-' . $this->footnoteCount . '-' . $post_id;
70 + if (is_singular() && is_main_query()) {
71 + $footnoteLink = '#easy-footnote-bottom-'.$this->footnoteCount;
124 72 } else {
125 - $footnoteLink = get_permalink( get_the_ID() ) . '#easy-footnote-bottom-' . $this->footnoteCount . '-' . $post_id;
73 + $footnoteLink = get_permalink(get_the_ID()).'#easy-footnote-bottom-'.$this->footnoteCount;
126 74 }
127 75
128 - $footnoteContent = "<span id='easy-footnote-" . esc_attr( $this->footnoteCount ) . '-' . $post_id . "' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='" . esc_url( $footnoteLink ) . "' title='" . htmlspecialchars( $content, ENT_QUOTES ) . "'><sup>" . esc_html( $this->footnoteCount ) . "</sup></a></span>";
76 + $footnoteContent = "<span id='easy-footnote-".esc_attr($this->footnoteCount)."' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='".esc_url($footnoteLink)."' title='".htmlspecialchars($content, ENT_QUOTES)."'><sup>".esc_html($this->footnoteCount)."</sup></a></span>";
129 77
130 78 return $footnoteContent;
131 79 }
132 80
133 - /**
134 - * The content of a particular footnote.
135 - *
136 - * @param string $content The content from a particular call of the shortcode.
137 - */
138 - public function easy_footnote_content( $content ) {
139 - $this->footnotes[ $this->footnoteCount ] = $content;
81 + public function easy_footnote_content($content) {
82 + $this->footnotes[$this->footnoteCount] = $content;
140 83
141 84 return $this->footnotes;
142 85 }
143 86
144 - /**
145 - * Display the list of footnotes after the post content.
146 - *
147 - * @param string $content The content of the current post.
148 - */
149 - public function easy_footnote_after_content( $content ) {
150 - if ( isset( $this->footnoteOptions['hide_easy_footnote_after_posts'] ) && $this->footnoteOptions['hide_easy_footnote_after_posts'] ) {
151 - return $content;
87 + public function easy_footnote_count($count, $currentPost) {
88 + if ($this->prevPost != $currentPost) {
89 + $count = 0;
152 90 }
153 91
154 - if ( isset( $this->footnoteOptions['show_easy_footnote_on_front'] ) && $this->footnoteOptions['show_easy_footnote_on_front'] ) {
155 - $efn_show_on_front = is_front_page();
156 - } else {
157 - $efn_show_on_front = false;
158 - }
92 + $this->prevPost = $currentPost;
159 93
160 - if ( ( is_singular() || $efn_show_on_front ) && is_main_query() ) {
161 - $footnotesInsert = $this->footnotes;
94 + $count++;
162 95
163 - $footnoteCopy = '';
164 - $efn_output = '';
96 + $this->footnoteCount = $count;
165 97
166 - $useLabel = isset( $this->footnoteOptions['useLabel'] ) ? $this->footnoteOptions['useLabel'] : false;
167 - $efLabel = isset($this->footnoteOptions['footnoteLabel'] ) ? $this->footnoteOptions['footnoteLabel'] : __( 'Footnotes', 'easy-footnotes' );
98 + return $this->footnoteCount;
99 + }
168 100
169 - $post_id = get_the_ID();
101 + // Calculate reading time by running it through the_content
102 + public function easy_footnote_after_content($content) {
103 + if (is_singular() && is_main_query()) {
104 + $footnotesInsert = $this->footnotes;
105 + global $footnoteCopy;
170 106
171 - foreach ( $footnotesInsert as $count => $footnote ) {
172 - $footnoteCopy .= '<li class="easy-footnote-single"><span id="easy-footnote-bottom-' .esc_attr( $count ) . '-' . $post_id . '" class="easy-footnote-margin-adjust"></span>' . wp_kses_post( $footnote ) . '<a class="easy-footnote-to-top" href="' . esc_url( '#easy-footnote-' . $count . '-' . $post_id ) . '"></a></li>';
107 + $footnoteOptions = get_option('easy_footnotes_options');
108 + $useLabel = $footnoteOptions['useLabel'];
109 + $efLabel = $footnoteOptions['footnoteLabel'];
110 +
111 + foreach ($footnotesInsert as $count => $footnote) {
112 + $footnoteCopy .= '<li class="easy-footnote-single"><span id="easy-footnote-bottom-'.esc_attr($count).'" class="easy-footnote-margin-adjust"></span>'.wp_kses_post($footnote).'<a class="easy-footnote-to-top" href="'.esc_url('#easy-footnote-'.$count).'"></a></li>';
173 113 }
174 - if ( ! empty( $footnotesInsert ) ) {
175 - if ( true === $useLabel ) {
176 - $footnote_label = '<h4>' . esc_html( $efLabel ) . '</h4>';
177 - // Filter for editing footnote label markup and output.
178 - $footnote_label = apply_filters( 'efn_footnote_label', $footnote_label, $efLabel );
179 -
180 - $efn_output .= sprintf(
181 - '<div class="easy-footnote-title">
182 - %s
183 - </div>',
184 - $footnote_label
185 - );
114 + if (!empty($footnotesInsert)) {
115 + if ($useLabel === true) {
116 + $content .= '<div class="easy-footnote-title"><h4>'.esc_html($efLabel).'</h4></div><ol class="easy-footnotes-wrapper">'.$footnoteCopy.'</ol>';
117 + } else {
118 + $content .= '<ol class="easy-footnotes-wrapper">'.$footnoteCopy.'</ol>';
186 119 }
120 + }
187 121
188 - $footnote_content = '';
189 122
190 - // Add filter before footnote list.
191 - $footnote_content = apply_filters( 'before_footnote', $footnote_content );
192 - $footnote_content .= '<ol class="easy-footnotes-wrapper">' . $footnoteCopy . '</ol>';
193 -
194 - // Add filter after footnote list.
195 - $footnote_content = apply_filters( 'after_footnote', $footnote_content );
196 -
197 - $efn_output .= $footnote_content;
198 -
199 - // Add filters for the entire footnote list output.
200 - $efn_output = apply_filters( 'efn_footnote_list_output', $efn_output );
201 -
202 - $content .= do_shortcode( $efn_output );
203 - }
204 123 }
205 -
206 124 return $content;
207 125 }
208 126
209 - /**
210 - * Reset the footnote count and footnote array each time the_content has been run.
211 - *
212 - * @param string $content The content of the post from the_content filter.
213 - */
214 - public function easy_footnote_reset( $content ) {
215 - $this->footnoteCount = 0;
216 -
217 - $this->footnotes = array();
218 -
219 - return $content;
220 - }
221 -
222 - /**
223 - * Include the easy-footnotes-admin.php file.
224 - */
127 + // Functions to create Reading Time admin pages
225 128 public function easy_footnotes_admin() {
226 - include 'easy-footnotes-admin.php';
129 + include('easy-footnotes-admin.php');
227 130 }
228 131
229 - /**
230 - * Function to add options page for Easy Footnote Settings.
231 - */
232 132 public function easy_footnotes_admin_actions() {
233 - add_options_page(
234 - __( 'Easy Footnotes Settings', 'easy-footnotes' ),
235 - __( 'Easy Footnotes', 'easy-footnotes' ),
236 - 'manage_options',
237 - 'easy-footnotes-settings',
238 - array( $this, 'easy_footnotes_admin' )
239 - );
133 + add_options_page("Easy Footnotes Settings", "Easy Footnotes", "manage_options", "easy-footnotes-settings", array($this, "easy_footnotes_admin"));
240 134 }
241 135
242 - /**
243 - * Function for enqueuring EAsy Footnotes admin scripts.
244 - */
245 - public function easy_footnotes_admin_scripts() {
246 - wp_enqueue_style( 'easy-footnotes-admin-styles', plugins_url( '/assets/easy-footnotes-admin.css', __FILE__ ), '', '1.0.13' );
247 - wp_enqueue_script( 'easy-footnotes-admin-scripts', plugins_url( '/assets/js/easy-footnotes-admin.js', __FILE__ ), array( 'jquery' ), '1.0.1', true );
248 - }
249 136 }
250 137
251 138 $easyFootnotes = new easyFootnotes();