PluginProbe
Easy Footnotes / 1.0.16
Easy Footnotes v1.0.16
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
easy-footnotes / easy-footnotes.php

easy-footnotes.php in Easy Footnotes 1.0.16, at easy-footnotes.php

177 lines 6.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Easy Footnotes
4 * Plugin URI: https://jasonyingling.me/easy-footnotes-wordpress/
5 * Description: Easily add footnotes to your posts with a simple shortcode.
6 * Version: 1.0.16
7 * Author: Jason Yingling
8 * Author URI: https://jasonyingling.me
9 * License: GPL2
10 */
11
12 /* Copyright 2018 Jason Yingling (email : yingling017@gmail.com)
13
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.
17
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.
22
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
26 */
27
28 class easyFootnotes {
29
30 // Add label option using add_option if it does not already exist
31 public $footnotes = array();
32 public $footnoteCount = 0;
33 public $prevPost;
34
35 public function __construct() {
36 $footnoteSettings = array(
37 'footnoteLabel' => 'Footnotes',
38 'useLabel' => false,
39 'hide_easy_footnote_after_posts' => false
40 );
41
42 add_option('easy_footnotes_options', $footnoteSettings);
43 add_shortcode( 'note', array($this, 'easy_footnote_shortcode') );
44 add_filter('the_content', array($this, 'easy_footnote_after_content'), 20);
45 add_filter('the_content', array($this, 'easy_footnote_reset'), 999);
46 add_action('wp_enqueue_scripts', array($this, 'register_qtip_scripts'));
47 add_action('admin_menu', array($this, 'easy_footnotes_admin_actions'));
48 add_action( 'admin_enqueue_scripts', array($this, 'easy_footnotes_admin_scripts') );
49 }
50
51 public function register_qtip_scripts() {
52 wp_register_script( 'imagesloaded', plugins_url( '/assets/qtip/imagesloaded.pkgd.min.js' , __FILE__ ), null, false, true );
53 wp_register_script( 'qtip', plugins_url( '/assets/qtip/jquery.qtip.min.js' , __FILE__ ), array('jquery', 'imagesloaded'), false, true );
54 wp_register_script( 'qtipcall', plugins_url( '/assets/qtip/jquery.qtipcall.js' , __FILE__ ), array('jquery', 'qtip'), false, true );
55 wp_register_style( 'qtipstyles', plugins_url( '/assets/qtip/jquery.qtip.min.css' , __FILE__ ), null, false, false );
56 wp_register_style( 'easyfootnotescss', plugins_url( '/assets/easy-footnotes.css' , __FILE__ ), null, false, false );
57 }
58
59 public function easy_footnote_shortcode($atts, $content = null) {
60 wp_enqueue_style( 'qtipstyles' );
61 wp_enqueue_style( 'easyfootnotescss' );
62 wp_enqueue_script( 'imagesloaded' );
63 wp_enqueue_script( 'qtip' );
64 wp_enqueue_script( 'qtipcall' );
65 wp_enqueue_style( 'dashicons' );
66
67 extract (shortcode_atts(array(
68 ), $atts));
69
70 $post_id = get_the_ID();
71
72 $content = do_shortcode($content);
73
74 $count = $this->footnoteCount;
75
76 // Increment the counter
77 $count++;
78
79 // Set the footnoteCount (This whole process needs reworked)
80 $this->footnoteCount = $count;
81
82 //$this->easy_footnote_count($this->footnoteCount, get_the_ID());
83 $this->easy_footnote_content($content);
84
85 if (is_singular() && is_main_query()) {
86 $footnoteLink = '#easy-footnote-bottom-'.$this->footnoteCount.'-'.$post_id;;
87 } else {
88 $footnoteLink = get_permalink(get_the_ID()).'#easy-footnote-bottom-'.$this->footnoteCount.'-'.$post_id;
89 }
90
91 $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>";
92
93 return $footnoteContent;
94 }
95
96 public function easy_footnote_content($content) {
97 $this->footnotes[$this->footnoteCount] = $content;
98
99 return $this->footnotes;
100 }
101
102 public function easy_footnote_count($count, $currentPost) {
103 if ($this->prevPost != $currentPost) {
104 $count = 0;
105 }
106
107 $this->prevPost = $currentPost;
108
109 $count++;
110
111 $this->footnoteCount = $count;
112
113 return $this->footnoteCount;
114 }
115
116 public function easy_footnote_after_content($content) {
117
118 $footnoteOptions = get_option('easy_footnotes_options');
119
120 if ( isset($footnoteOptions['hide_easy_footnote_after_posts']) && $footnoteOptions['hide_easy_footnote_after_posts'] ) {
121 return $content;
122 }
123
124 if (is_singular() && is_main_query()) {
125 $footnotesInsert = $this->footnotes;
126
127 $footnoteCopy = '';
128
129 $useLabel = $footnoteOptions['useLabel'];
130 $efLabel = $footnoteOptions['footnoteLabel'];
131
132 $post_id = get_the_ID();
133
134 foreach ($footnotesInsert as $count => $footnote) {
135 $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>';
136 }
137 if (!empty($footnotesInsert)) {
138 if ($useLabel === true) {
139 $content .= '<div class="easy-footnote-title"><h4>'.esc_html($efLabel).'</h4></div><ol class="easy-footnotes-wrapper">'.$footnoteCopy.'</ol>';
140 } else {
141 $content .= '<ol class="easy-footnotes-wrapper">'.$footnoteCopy.'</ol>';
142 }
143 }
144
145 }
146
147 return $content;
148 }
149
150 /**
151 * Reset the footnote count and footnote array each time the_content has been run.
152 */
153 public function easy_footnote_reset($content) {
154 $this->footnoteCount = 0;
155
156 $this->footnotes = array();
157
158 return $content;
159 }
160
161 // Functions to create Reading Time admin pages
162 public function easy_footnotes_admin() {
163 include('easy-footnotes-admin.php');
164 }
165
166 public function easy_footnotes_admin_actions() {
167 add_options_page("Easy Footnotes Settings", "Easy Footnotes", "manage_options", "easy-footnotes-settings", array($this, "easy_footnotes_admin"));
168 }
169
170 public function easy_footnotes_admin_scripts() {
171 wp_enqueue_style( 'easy-footnotes-admin-styles', plugins_url( '/assets/easy-footnotes-admin.css' , __FILE__ ), '', '1.0.13' );
172 }
173
174 }
175
176 $easyFootnotes = new easyFootnotes();
177