From 36c0e2fbe837ea0b62aa0c6027c9d5e6ef424bd0 Mon Sep 17 00:00:00 2001
From: Shea Bunge
Date: Mon, 17 Jun 2013 17:32:40 +1000
Subject: [PATCH] Updated to version 1.2
---
code-snippets.php | 359 ++---
css/style.css | 12 +-
{img => images}/icon16.png | Bin
{img => images}/icon32.png | Bin
img/icon-big.png | Bin 34722 -> 0 bytes
img/icon-horiz.png | Bin 13650 -> 0 bytes
img/icon-med.png | Bin 15744 -> 0 bytes
img/icon-small.png | Bin 4534 -> 0 bytes
img/icon.odg | Bin 3191 -> 0 bytes
img/icon.svg | 58 -
inc/uninstall-plugin.php | 30 -
.../admin-edit.php | 32 +-
.../admin-manage.php | 36 +-
includes/edit_area/autocompletion.js | 491 +++++++
includes/edit_area/edit_area.css | 530 ++++++++
includes/edit_area/edit_area.js | 527 ++++++++
includes/edit_area/edit_area_compressor.php | 428 ++++++
includes/edit_area/edit_area_full.gz | Bin 0 -> 29377 bytes
includes/edit_area/edit_area_full.js | 38 +
includes/edit_area/edit_area_functions.js | 1202 +++++++++++++++++
includes/edit_area/edit_area_loader.js | 1081 +++++++++++++++
includes/edit_area/elements_functions.js | 336 +++++
includes/edit_area/highlight.js | 407 ++++++
includes/edit_area/images/autocompletion.gif | Bin 0 -> 359 bytes
includes/edit_area/images/close.gif | Bin 0 -> 102 bytes
includes/edit_area/images/fullscreen.gif | Bin 0 -> 198 bytes
includes/edit_area/images/go_to_line.gif | Bin 0 -> 1053 bytes
includes/edit_area/images/help.gif | Bin 0 -> 295 bytes
includes/edit_area/images/highlight.gif | Bin 0 -> 256 bytes
includes/edit_area/images/load.gif | Bin 0 -> 1041 bytes
includes/edit_area/images/move.gif | Bin 0 -> 257 bytes
includes/edit_area/images/newdocument.gif | Bin 0 -> 170 bytes
includes/edit_area/images/opacity.png | Bin 0 -> 146 bytes
includes/edit_area/images/processing.gif | Bin 0 -> 825 bytes
includes/edit_area/images/redo.gif | Bin 0 -> 169 bytes
includes/edit_area/images/reset_highlight.gif | Bin 0 -> 168 bytes
includes/edit_area/images/save.gif | Bin 0 -> 285 bytes
includes/edit_area/images/search.gif | Bin 0 -> 191 bytes
.../edit_area/images/smooth_selection.gif | Bin 0 -> 174 bytes
includes/edit_area/images/spacer.gif | Bin 0 -> 43 bytes
.../edit_area/images/statusbar_resize.gif | Bin 0 -> 79 bytes
includes/edit_area/images/undo.gif | Bin 0 -> 175 bytes
includes/edit_area/images/word_wrap.gif | Bin 0 -> 951 bytes
includes/edit_area/keyboard.js | 145 ++
includes/edit_area/langs/bg.js | 54 +
includes/edit_area/langs/cs.js | 48 +
includes/edit_area/langs/de.js | 48 +
includes/edit_area/langs/dk.js | 48 +
includes/edit_area/langs/en.js | 48 +
includes/edit_area/langs/eo.js | 48 +
includes/edit_area/langs/es.js | 48 +
includes/edit_area/langs/fi.js | 48 +
includes/edit_area/langs/fr.js | 48 +
includes/edit_area/langs/hr.js | 48 +
includes/edit_area/langs/it.js | 48 +
includes/edit_area/langs/ja.js | 48 +
includes/edit_area/langs/mk.js | 48 +
includes/edit_area/langs/nl.js | 48 +
includes/edit_area/langs/pl.js | 48 +
includes/edit_area/langs/pt.js | 48 +
includes/edit_area/langs/ru.js | 48 +
includes/edit_area/langs/sk.js | 48 +
includes/edit_area/langs/zh.js | 48 +
includes/edit_area/license_apache.txt | 7 +
includes/edit_area/license_bsd.txt | 10 +
includes/edit_area/license_lgpl.txt | 458 +++++++
includes/edit_area/manage_area.js | 623 +++++++++
includes/edit_area/plugins/charmap/charmap.js | 90 ++
.../edit_area/plugins/charmap/css/charmap.css | 64 +
.../plugins/charmap/images/charmap.gif | Bin 0 -> 245 bytes
.../edit_area/plugins/charmap/jscripts/map.js | 373 +++++
.../edit_area/plugins/charmap/langs/bg.js | 12 +
.../edit_area/plugins/charmap/langs/cs.js | 6 +
.../edit_area/plugins/charmap/langs/de.js | 6 +
.../edit_area/plugins/charmap/langs/dk.js | 6 +
.../edit_area/plugins/charmap/langs/en.js | 6 +
.../edit_area/plugins/charmap/langs/eo.js | 6 +
.../edit_area/plugins/charmap/langs/es.js | 6 +
.../edit_area/plugins/charmap/langs/fr.js | 6 +
.../edit_area/plugins/charmap/langs/hr.js | 6 +
.../edit_area/plugins/charmap/langs/it.js | 6 +
.../edit_area/plugins/charmap/langs/ja.js | 6 +
.../edit_area/plugins/charmap/langs/mk.js | 6 +
.../edit_area/plugins/charmap/langs/nl.js | 6 +
.../edit_area/plugins/charmap/langs/pl.js | 6 +
.../edit_area/plugins/charmap/langs/pt.js | 6 +
.../edit_area/plugins/charmap/langs/ru.js | 6 +
.../edit_area/plugins/charmap/langs/sk.js | 6 +
.../edit_area/plugins/charmap/langs/zh.js | 6 +
includes/edit_area/plugins/charmap/popup.html | 24 +
includes/edit_area/plugins/test/css/test.css | 3 +
.../edit_area/plugins/test/images/test.gif | Bin 0 -> 87 bytes
includes/edit_area/plugins/test/langs/bg.js | 10 +
includes/edit_area/plugins/test/langs/cs.js | 4 +
includes/edit_area/plugins/test/langs/de.js | 4 +
includes/edit_area/plugins/test/langs/dk.js | 4 +
includes/edit_area/plugins/test/langs/en.js | 4 +
includes/edit_area/plugins/test/langs/eo.js | 4 +
includes/edit_area/plugins/test/langs/es.js | 4 +
includes/edit_area/plugins/test/langs/fr.js | 4 +
includes/edit_area/plugins/test/langs/hr.js | 4 +
includes/edit_area/plugins/test/langs/it.js | 4 +
includes/edit_area/plugins/test/langs/ja.js | 4 +
includes/edit_area/plugins/test/langs/mk.js | 4 +
includes/edit_area/plugins/test/langs/nl.js | 4 +
includes/edit_area/plugins/test/langs/pl.js | 4 +
includes/edit_area/plugins/test/langs/pt.js | 4 +
includes/edit_area/plugins/test/langs/ru.js | 4 +
includes/edit_area/plugins/test/langs/sk.js | 4 +
includes/edit_area/plugins/test/langs/zh.js | 4 +
includes/edit_area/plugins/test/test.js | 110 ++
includes/edit_area/plugins/test/test2.js | 1 +
includes/edit_area/reg_syntax.js | 166 +++
includes/edit_area/reg_syntax/basic.js | 70 +
includes/edit_area/reg_syntax/brainfuck.js | 45 +
includes/edit_area/reg_syntax/c.js | 63 +
includes/edit_area/reg_syntax/coldfusion.js | 120 ++
includes/edit_area/reg_syntax/cpp.js | 66 +
includes/edit_area/reg_syntax/css.js | 85 ++
includes/edit_area/reg_syntax/html.js | 51 +
includes/edit_area/reg_syntax/java.js | 57 +
includes/edit_area/reg_syntax/js.js | 94 ++
includes/edit_area/reg_syntax/pas.js | 83 ++
includes/edit_area/reg_syntax/perl.js | 88 ++
includes/edit_area/reg_syntax/php.js | 157 +++
includes/edit_area/reg_syntax/python.js | 145 ++
includes/edit_area/reg_syntax/robotstxt.js | 25 +
includes/edit_area/reg_syntax/ruby.js | 68 +
includes/edit_area/reg_syntax/sql.js | 56 +
includes/edit_area/reg_syntax/tsql.js | 88 ++
includes/edit_area/reg_syntax/vb.js | 53 +
includes/edit_area/reg_syntax/xml.js | 57 +
includes/edit_area/regexp.js | 139 ++
includes/edit_area/resize_area.js | 73 +
includes/edit_area/search_replace.js | 174 +++
includes/edit_area/template.html | 100 ++
js/jquery.textarea.js | 267 ----
readme.txt | 44 +-
screenshot-1.jpg | Bin 288113 -> 305935 bytes
screenshot-2.jpg | Bin 145233 -> 166071 bytes
screenshot-3.jpg | Bin 202034 -> 261813 bytes
screenshot-4.jpg | Bin 542574 -> 305982 bytes
screenshot-5.jpg | Bin 276403 -> 0 bytes
143 files changed, 10404 insertions(+), 615 deletions(-)
rename {img => images}/icon16.png (100%)
rename {img => images}/icon32.png (100%)
delete mode 100644 img/icon-big.png
delete mode 100644 img/icon-horiz.png
delete mode 100644 img/icon-med.png
delete mode 100644 img/icon-small.png
delete mode 100644 img/icon.odg
delete mode 100644 img/icon.svg
delete mode 100644 inc/uninstall-plugin.php
rename inc/edit-snippets.php => includes/admin-edit.php (68%)
rename inc/manage-snippets.php => includes/admin-manage.php (56%)
create mode 100644 includes/edit_area/autocompletion.js
create mode 100644 includes/edit_area/edit_area.css
create mode 100644 includes/edit_area/edit_area.js
create mode 100644 includes/edit_area/edit_area_compressor.php
create mode 100644 includes/edit_area/edit_area_full.gz
create mode 100644 includes/edit_area/edit_area_full.js
create mode 100644 includes/edit_area/edit_area_functions.js
create mode 100644 includes/edit_area/edit_area_loader.js
create mode 100644 includes/edit_area/elements_functions.js
create mode 100644 includes/edit_area/highlight.js
create mode 100644 includes/edit_area/images/autocompletion.gif
create mode 100644 includes/edit_area/images/close.gif
create mode 100644 includes/edit_area/images/fullscreen.gif
create mode 100644 includes/edit_area/images/go_to_line.gif
create mode 100644 includes/edit_area/images/help.gif
create mode 100644 includes/edit_area/images/highlight.gif
create mode 100644 includes/edit_area/images/load.gif
create mode 100644 includes/edit_area/images/move.gif
create mode 100644 includes/edit_area/images/newdocument.gif
create mode 100644 includes/edit_area/images/opacity.png
create mode 100644 includes/edit_area/images/processing.gif
create mode 100644 includes/edit_area/images/redo.gif
create mode 100644 includes/edit_area/images/reset_highlight.gif
create mode 100644 includes/edit_area/images/save.gif
create mode 100644 includes/edit_area/images/search.gif
create mode 100644 includes/edit_area/images/smooth_selection.gif
create mode 100644 includes/edit_area/images/spacer.gif
create mode 100644 includes/edit_area/images/statusbar_resize.gif
create mode 100644 includes/edit_area/images/undo.gif
create mode 100644 includes/edit_area/images/word_wrap.gif
create mode 100644 includes/edit_area/keyboard.js
create mode 100644 includes/edit_area/langs/bg.js
create mode 100644 includes/edit_area/langs/cs.js
create mode 100644 includes/edit_area/langs/de.js
create mode 100644 includes/edit_area/langs/dk.js
create mode 100644 includes/edit_area/langs/en.js
create mode 100644 includes/edit_area/langs/eo.js
create mode 100644 includes/edit_area/langs/es.js
create mode 100644 includes/edit_area/langs/fi.js
create mode 100644 includes/edit_area/langs/fr.js
create mode 100644 includes/edit_area/langs/hr.js
create mode 100644 includes/edit_area/langs/it.js
create mode 100644 includes/edit_area/langs/ja.js
create mode 100644 includes/edit_area/langs/mk.js
create mode 100644 includes/edit_area/langs/nl.js
create mode 100644 includes/edit_area/langs/pl.js
create mode 100644 includes/edit_area/langs/pt.js
create mode 100644 includes/edit_area/langs/ru.js
create mode 100644 includes/edit_area/langs/sk.js
create mode 100644 includes/edit_area/langs/zh.js
create mode 100644 includes/edit_area/license_apache.txt
create mode 100644 includes/edit_area/license_bsd.txt
create mode 100644 includes/edit_area/license_lgpl.txt
create mode 100644 includes/edit_area/manage_area.js
create mode 100644 includes/edit_area/plugins/charmap/charmap.js
create mode 100644 includes/edit_area/plugins/charmap/css/charmap.css
create mode 100644 includes/edit_area/plugins/charmap/images/charmap.gif
create mode 100644 includes/edit_area/plugins/charmap/jscripts/map.js
create mode 100644 includes/edit_area/plugins/charmap/langs/bg.js
create mode 100644 includes/edit_area/plugins/charmap/langs/cs.js
create mode 100644 includes/edit_area/plugins/charmap/langs/de.js
create mode 100644 includes/edit_area/plugins/charmap/langs/dk.js
create mode 100644 includes/edit_area/plugins/charmap/langs/en.js
create mode 100644 includes/edit_area/plugins/charmap/langs/eo.js
create mode 100644 includes/edit_area/plugins/charmap/langs/es.js
create mode 100644 includes/edit_area/plugins/charmap/langs/fr.js
create mode 100644 includes/edit_area/plugins/charmap/langs/hr.js
create mode 100644 includes/edit_area/plugins/charmap/langs/it.js
create mode 100644 includes/edit_area/plugins/charmap/langs/ja.js
create mode 100644 includes/edit_area/plugins/charmap/langs/mk.js
create mode 100644 includes/edit_area/plugins/charmap/langs/nl.js
create mode 100644 includes/edit_area/plugins/charmap/langs/pl.js
create mode 100644 includes/edit_area/plugins/charmap/langs/pt.js
create mode 100644 includes/edit_area/plugins/charmap/langs/ru.js
create mode 100644 includes/edit_area/plugins/charmap/langs/sk.js
create mode 100644 includes/edit_area/plugins/charmap/langs/zh.js
create mode 100644 includes/edit_area/plugins/charmap/popup.html
create mode 100644 includes/edit_area/plugins/test/css/test.css
create mode 100644 includes/edit_area/plugins/test/images/test.gif
create mode 100644 includes/edit_area/plugins/test/langs/bg.js
create mode 100644 includes/edit_area/plugins/test/langs/cs.js
create mode 100644 includes/edit_area/plugins/test/langs/de.js
create mode 100644 includes/edit_area/plugins/test/langs/dk.js
create mode 100644 includes/edit_area/plugins/test/langs/en.js
create mode 100644 includes/edit_area/plugins/test/langs/eo.js
create mode 100644 includes/edit_area/plugins/test/langs/es.js
create mode 100644 includes/edit_area/plugins/test/langs/fr.js
create mode 100644 includes/edit_area/plugins/test/langs/hr.js
create mode 100644 includes/edit_area/plugins/test/langs/it.js
create mode 100644 includes/edit_area/plugins/test/langs/ja.js
create mode 100644 includes/edit_area/plugins/test/langs/mk.js
create mode 100644 includes/edit_area/plugins/test/langs/nl.js
create mode 100644 includes/edit_area/plugins/test/langs/pl.js
create mode 100644 includes/edit_area/plugins/test/langs/pt.js
create mode 100644 includes/edit_area/plugins/test/langs/ru.js
create mode 100644 includes/edit_area/plugins/test/langs/sk.js
create mode 100644 includes/edit_area/plugins/test/langs/zh.js
create mode 100644 includes/edit_area/plugins/test/test.js
create mode 100644 includes/edit_area/plugins/test/test2.js
create mode 100644 includes/edit_area/reg_syntax.js
create mode 100644 includes/edit_area/reg_syntax/basic.js
create mode 100644 includes/edit_area/reg_syntax/brainfuck.js
create mode 100644 includes/edit_area/reg_syntax/c.js
create mode 100644 includes/edit_area/reg_syntax/coldfusion.js
create mode 100644 includes/edit_area/reg_syntax/cpp.js
create mode 100644 includes/edit_area/reg_syntax/css.js
create mode 100644 includes/edit_area/reg_syntax/html.js
create mode 100644 includes/edit_area/reg_syntax/java.js
create mode 100644 includes/edit_area/reg_syntax/js.js
create mode 100644 includes/edit_area/reg_syntax/pas.js
create mode 100644 includes/edit_area/reg_syntax/perl.js
create mode 100644 includes/edit_area/reg_syntax/php.js
create mode 100644 includes/edit_area/reg_syntax/python.js
create mode 100644 includes/edit_area/reg_syntax/robotstxt.js
create mode 100644 includes/edit_area/reg_syntax/ruby.js
create mode 100644 includes/edit_area/reg_syntax/sql.js
create mode 100644 includes/edit_area/reg_syntax/tsql.js
create mode 100644 includes/edit_area/reg_syntax/vb.js
create mode 100644 includes/edit_area/reg_syntax/xml.js
create mode 100644 includes/edit_area/regexp.js
create mode 100644 includes/edit_area/resize_area.js
create mode 100644 includes/edit_area/search_replace.js
create mode 100644 includes/edit_area/template.html
delete mode 100644 js/jquery.textarea.js
delete mode 100644 screenshot-5.jpg
diff --git a/code-snippets.php b/code-snippets.php
index b195bc74..7e5c89cb 100644
--- a/code-snippets.php
+++ b/code-snippets.php
@@ -2,11 +2,11 @@
/*
Plugin Name: Code Snippets
- Plugin URI: http://wordpress.org/extend/plugins/code-snippets
+ Plugin URI: http://bungeshea.wordpress.com/plugins/code-snippets/
Description: Provides an easy-to-manage GUI interface for adding code snippets to your blog.
Author: Shea Bunge
- Version: 1.1
- Author URI: http://bungeshea.wordpress.com/plugins/code-snippets/
+ Version: 1.2
+ Author URI: http://bungeshea.wordpress.com/
License: GPLv3 or later
Code Snippets - WordPress Plugin
@@ -29,60 +29,50 @@
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
-if( !class_exists('code_snippets') ) :
+if( !class_exists('Code_Snippets') ) :
-class code_snippets {
+class Code_Snippets {
- public $table_name = '';
- public $version = '0.1';
- public $current_version = '';
- public $plugin_url = '';
- public $plugin_dir = '';
- public $dirname = '';
-
- public $manage_snippets_url = '';
- public $edit_snippets_url = '';
- public $uninstall_plugin_url = '';
+ public $table = 'snippets';
+ public $version = '1.2';
+
+ public $file;
+ public $plugin_dir;
+ public $plugin_url;
+ public $basename;
- public $manage_snippets_page;
- public $edit_snippets_page;
- public $uninstall_plugin_page;
+ var $admin_manage_url = 'snippets';
+ var $admin_edit_url = 'snippet';
- public function code_snippets(){
- $this->__construct();
- }
-
- function __construct() {
- $this->setup_vars(); // initialise the varables
- $this->setup_actions(); // run the actions and filters
- $this->run_snippets(); // execute the snippets
+ public function Code_Snippets() {
+ $this->setup(); // initialise the varables and run the hooks
+ $this->create_table(); // create the snippet tables if they do not exist
+ $this->upgrade(); // check if we need to change some stuff
+ $this->run_snippets(); // execute the snippets
}
- function setup_vars(){
+ function setup() {
global $wpdb;
- $this->table_name = $wpdb->prefix . 'snippets';
- $this->current_version = get_option( 'cs_db_version' );
- $this->file = __FILE__;
- $this->basename = plugin_basename( $this->file );
- $this->plugin_dir = plugin_dir_path( $this->file );
- $this->plugin_url = plugin_dir_url ( $this->file );
- $this->dirname = dirname( $this->file );
- $this->manage_snippets_url = admin_url( 'admin.php?page=snippets' );
- $this->edit_snippets_url = admin_url( 'admin.php?page=snippet-new' );
- $this->uninstall_plugin_url = admin_url( 'admin.php?page=uninstall-cs' );
- }
+ $this->file = __FILE__;
+ $this->table = $wpdb->prefix . $this->table;
+ $this->current_version = get_option( 'cs_db_version' );
+
+ $this->basename = plugin_basename( $this->file );
+ $this->plugin_dir = plugin_dir_path( $this->file );
+ $this->plugin_url = plugin_dir_url ( $this->file );
- private function setup_actions(){
- add_action( 'activate_' . $this->basename, array( &$this, 'install' ) );
- add_action( 'deactivate_' . $this->basename, array( &$this, 'uninstall' ) );
- add_action( 'admin_menu', array( &$this, 'add_admin_menus' ) );
- add_filter( 'plugin_action_links', array( $this, 'settings_link' ), 10, 2 );
+ $this->admin_manage_url = admin_url( 'admin.php?page=' . $this->admin_manage_url );
+ $this->admin_edit_url = admin_url( 'admin.php?page=' . $this->admin_edit_url );
+
+ add_action( 'admin_menu', array( $this, 'add_admin_menus' ) );
+ add_filter( 'plugin_action_links_' . $this->basename, array( $this, 'settings_link' ) );
+ add_filter( 'plugin_row_meta', array( $this, 'plugin_meta' ), 10, 2 );
}
- function install() {
+ function create_table() {
global $wpdb;
- if($wpdb->get_var("SHOW TABLES LIKE '$this->table_name'") != $this->table_name) {
- $sql = 'CREATE TABLE ' . $this->table_name . ' (
+ if( $wpdb->get_var( "SHOW TABLES LIKE '$this->table'" ) != $this->table ) {
+ $sql = 'CREATE TABLE ' . $this->table . ' (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(36) NOT NULL,
description text NOT NULL,
@@ -96,42 +86,36 @@ function install() {
}
}
- function uninstall() {
- if( get_option( 'cs_complete_uninstall', 0 ) == 1 ) {
- global $wpdb;
- if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) {
- $sql = 'DROP TABLE ' . $table_name;
- $wpdb->query( $sql );
- delete_option( 'cs_db_version' );
- delete_option( 'cs_complete_uninstall' );
- }
+ function upgrade() {
+ if( $this->current_version < $this->version ) {
+ delete_option( 'cs_complete_uninstall' );
+ update_option( 'cs_db_version', $this->version );
}
}
function add_admin_menus() {
- $this->manage_snippets_page = add_menu_page( 'Snippets', 'Snippets', 'install_plugins', 'snippets', array( &$this, 'manage_snippets' ), $this->plugin_url . 'img/icon16.png', 67 );
- add_submenu_page('snippets', 'Snippets', 'Manage Snippets' , 'install_plugins', 'snippets', array( &$this, 'manage_snippets') );
- $this->edit_snippets_page = add_submenu_page( 'snippets', 'Add New Snippet', 'Add New', 'install_plugins', 'snippet-new', array( &$this, 'edit_snippets' ) );
- $this->uninstall_plugin_page = add_submenu_page( 'snippets', 'Uninstall Code Snippets', 'Uninstall', 'install_plugins', 'uninstall-cs', array( &$this, 'uninstall_plugin' ) );
+ $this->admin_manage_page = add_menu_page( __('Snippets'), __('Snippets'), 'install_plugins', 'snippets', array( $this, 'admin_manage_loader' ), $this->plugin_url . 'images/icon16.png', 67 );
+ add_submenu_page('snippets', __('Snippets'), __('Manage Snippets') , 'install_plugins', 'snippets', array( $this, 'admin_manage_loader') );
+ $this->admin_edit_page = add_submenu_page( 'snippets', __('Add New Snippet'), __('Add New'), 'install_plugins', 'snippet', array( $this, 'admin_edit_loader' ) );
- add_action( 'admin_print_styles-' . $this->manage_snippets_page, array( $this, 'load_stylesheet' ), 5 );
- add_action( 'admin_print_styles-' . $this->edit_snippets_page, array( $this, 'load_stylesheet' ), 5 );
- add_action( 'admin_print_styles-' . $this->uninstall_plugin_page, array( $this, 'load_stylesheet' ), 5 );
- add_action( 'admin_print_scripts-' . $this->edit_snippets_page, array( $this, 'load_tabby' ), 5 );
- add_action( 'load-' . $this->manage_snippets_page, array( $this, 'manage_snippets_help' ), 5 );
- add_action( 'load-' . $this->edit_snippets_page, array( $this, 'edit_snippets_help' ), 5 );
- add_action( 'load-' . $this->uninstall_plugin_page, array( $this, 'uninstall_plugin_help' ), 5 );
+ add_action( "admin_print_styles-$this->admin_manage_page", array( $this, 'load_stylesheet' ), 5 );
+ add_action( "admin_print_styles-$this->admin_edit_page", array( $this, 'load_stylesheet' ), 5 );
+ add_action( "admin_print_scripts-$this->admin_edit_page", array( $this, 'load_editarea' ), 5 );
+ add_action( "load-$this->admin_manage_page", array( $this, 'admin_manage_help' ), 5 );
+ add_action( "load-$this->admin_edit_page", array( $this, 'admin_edit_help' ), 5 );
}
-
+
function load_stylesheet() {
wp_enqueue_style('code-snippets-admin-style', plugins_url( 'css/style.css', $this->file), false, $this->version );
}
-
- function load_tabby() {
- wp_enqueue_script( 'tabby', plugins_url( 'js/jquery.textarea.js', $this->file), array( 'jquery' ), 0.12 );
+
+ function load_editarea() {
+ wp_register_script( 'editarea', plugins_url( 'includes/edit_area/edit_area_full.js', $this->file ), array( 'jquery' ), '0.8.2' );
+ wp_enqueue_script( 'editarea' );
}
- function manage_snippets_help() {
+ function admin_manage_help() {
+
$screen = get_current_screen();
$screen->add_help_tab( array(
'id' => 'overview',
@@ -144,21 +128,33 @@ function manage_snippets_help() {
'title' => 'Troubleshooting',
'content' =>
"Be sure to check your snippets for errors before you activate them as a faulty snippet could bring your whole blog down. If your site starts doing strange things, deactivate all your snippets and activate them one at a time.
" .
- "If something goes wrong with a snippet and you can’t use WordPress, you can use a database manager like phpMyAdmin to access the $this->table_name
table in your WordPress database. Locate the offending snippet (if you know which one is the trouble) and change the 1 in the 'active' column into a 0. If this doesn't work try doing this for all snippets.
"
+ "If something goes wrong with a snippet and you can’t use WordPress, you can use a database manager like phpMyAdmin to access the $this->table
table in your WordPress database. Locate the offending snippet (if you know which one is the trouble) and change the 1 in the 'active' column into a 0. If this doesn't work try doing this for all snippets.
You can also delete or rename the $this->table
table and the table will automaticly be reconstructed so you can re-add snippets one at a time.
"
+ ) );
+
+ $screen->add_help_tab( array(
+ 'id' => 'uninstall',
+ 'title' => 'Uninstall',
+ 'content' =>
+ "When you delete Code Snippets through the Plugins menu in WordPress it will clear up the $this->table
table and a few other bits of data stored in the database. If you want to keep this data (ie you are only temporally uninstalling Code Snippets) then remove the ".dirname(__FILE__)."
folder using FTP." .
+ "
Even if you're sure that you don't want to use Code Snippets ever again on this WordPress installaion, you may want to use phpMyAdmin to back up the $this->table
table in the database. You can later use phpMyAdmin to import it back.
"
) );
$screen->set_help_sidebar(
"For more information:
" .
"WordPress Extend
" .
"Support Forums
" .
- "SheaPress
"
+ "SheaPress
"
);
}
- function edit_snippets_help() {
+ function admin_edit_title( $title ) {
+ return str_ireplace( 'Add New Snippet', 'Edit Snippet', $title );
+ }
+
+ function admin_edit_help() {
if( isset( $_GET['action'] ) && @$_GET['action'] == 'edit' )
- add_filter('admin_title', array( &$this, 'edit_snippets_title' ), 10, 2);
+ add_filter( 'admin_title', array( $this, 'admin_edit_title' ) );
$screen = get_current_screen();
$screen->add_help_tab( array(
@@ -173,12 +169,23 @@ function edit_snippets_help() {
'content' =>
"Here are some links to websites which host a large number of snippets that you can add to your site.
- Snippets can be installed through the Add New Snippet page or by addng them to the $this->table_name
table in the database (Warning: for advanced users only). Once a snippet has been installed, you can activate it here.
"
+ And below is a selection of snippets to get you started:
+
+ Snippets can be installed through the Add New Snippet page or by addng them to the $this->table
table in the database (Warning: for advanced users only). Once a snippet has been installed, you can activate it here."
) );
$screen->add_help_tab( array(
'id' => 'adding',
@@ -193,112 +200,69 @@ function edit_snippets_help() {
"For more information:
" .
"WordPress Extend
" .
"Support Forums
" .
- "SheaPress
"
- );
- }
-
- function uninstall_plugin_help() {
- $screen = get_current_screen();
- $screen->add_help_tab( array(
- 'id' => 'overview',
- 'title' => 'Overview',
- 'content' =>
- "If you are absolutly sure that you will never, ever want to use the Code Snippets plugin ever again in your entire life on this WordPress installation, you can use this page to tell Code Snippets to clear all of its data when deactivated. Simply check the box below and click on the submit button. If you realise what a cool plugin Code Snippets actually is before you get around to deactivating the plugin you can come back here and uncheck the box. If the box is selected when Code Snippets is deactivated it will clear up the $this->table_name
table and a few other bits of data stored in the database.
" .
- "Even if you're sure that you don't want to use Code Snippets on this WordPress installaion, you may want to use phpMyAdmin to back up the $this->table_name
table in the database. You can later use phpMyAdmin to import it back.
"
- ) );
-
- $screen->set_help_sidebar(
- "For more information:
" .
- "WordPress Extend
" .
- "Support Forums
" .
- "SheaPress
"
+ "SheaPress
"
);
}
- function manage_snippets() {
+ function bulk_action( $action, $ids ) {
+ if( !isset( $action ) && !isset( $ids ) && !is_array( $ids ) )
+ return false;
global $wpdb;
- $msg = '';
- if( isset( $_POST['action'] ) && isset( $_POST['snippets'] ) && is_array( $_POST['snippets'] ) ) {
- $count = 0;
- switch( $_POST['action'] ) {
+ $count = 0;
+ switch( $action ) {
- case 'activate':
- foreach($_POST['snippets'] as $bd) {
- $wpdb->query('update ' . $this->table_name . ' set active=1 where id=' . intval( $bd ) . ' limit 1' );
- $count++;
- }
- $msg = "Activated $count snippets.";
- break;
+ case 'activate':
+ foreach( $ids as $id ) {
+ $wpdb->query('update ' . $this->table . ' set active=1 where id=' . intval( $id ) . ' limit 1' );
+ $count++;
+ }
+ $msg = "Activated $count snippets.";
+ break;
- case 'deactivate':
- foreach($_POST['snippets'] as $bd) {
- $wpdb->query('update ' . $this->table_name . ' set active=0 where id=' . intval( $bd ) . ' limit 1' );
- $count++;
- }
- $msg = "Deactivated $count snippets.";
- break;
+ case 'deactivate':
+ foreach( $ids as $id ) {
+ $wpdb->query( 'update ' . $this->table . ' set active=0 where id=' . intval( $id ) . ' limit 1' );
+ $count++;
+ }
+ $msg = "Deactivated $count snippets.";
+ break;
- case 'delete':
- foreach( $_POST['snippets'] as $bd) {
- $wpdb->query("delete from ".$wpdb->prefix."snippets where id=".intval($bd)." limit 1");
- $count++;
- }
- $msg = "Deleted $count snippets.";
- break;
- }
+ case 'delete':
+ foreach( $ids as $id ) {
+ $wpdb->query( 'delete from ' . $this->table . ' where id=' . intval( $id ) . ' limit 1' );
+ $count++;
+ }
+ $msg = "Deleted $count snippets.";
+ break;
}
+ }
+
+ function admin_manage_loader() {
+ global $wpdb;
- if( isset( $_POST['action2'] ) && isset( $_POST['snippets'] ) && is_array( $_POST['snippets'] ) ) {
- $count = 0;
- switch( $_POST['action2'] ) {
-
- case 'activate':
- foreach($_POST['snippets'] as $bd) {
- $wpdb->query('update ' . $this->table_name . ' set active=1 where id=' . intval( $bd ) . ' limit 1' );
- $count++;
- }
- $msg = "Activated $count snippets.";
- break;
-
- case 'deactivate':
- foreach($_POST['snippets'] as $bd) {
- $wpdb->query('update ' . $this->table_name . ' set active=0 where id=' . intval( $bd ) . ' limit 1' );
- $count++;
- }
- $msg = "Deactivated $count snippets.";
- break;
-
- case 'delete':
- foreach( $_POST['snippets'] as $bd) {
- $wpdb->query("delete from ".$wpdb->prefix."snippets where id=".intval($bd)." limit 1");
- $count++;
- }
- $msg = "Deleted $count snippets.";
- break;
- }
- }
+ $this->bulk_action( @$_POST['action'], @$_POST['ids'] );
+ $this->bulk_action( @$_POST['action2'], @$_POST['ids'] );
if( isset( $_GET['action'] ) && isset( $_GET['id'] ) ) {
if( $_GET['action'] == 'delete') {
- $wpdb->query( 'delete from ' . $this->table_name . ' where id=' . intval( $_GET['id'] ) . ' limit 1' );
+ $wpdb->query( 'delete from ' . $this->table . ' where id=' . intval( $_GET['id'] ) . ' limit 1' );
$msg = 'Snippet deleted.';
}
elseif( $_GET['action'] == 'activate' ) {
- $wpdb->query('update ' . $this->table_name . ' set active=1 where id=' . intval( $_GET['id'] ) . ' limit 1' );
+ $wpdb->query('update ' . $this->table . ' set active=1 where id=' . intval( $_GET['id'] ) . ' limit 1' );
$msg = 'Snippet activated.';
}
elseif( $_GET['action'] == 'deactivate' ) {
- $wpdb->query('update ' . $this->table_name . ' set active=0 where id=' . intval( $_GET['id'] ) . ' limit 1' );
+ $wpdb->query('update ' . $this->table . ' set active=0 where id=' . intval( $_GET['id'] ) . ' limit 1' );
$msg = 'Snippet deactivated.';
}
}
-
- require_once( $this->dirname . '/inc/manage-snippets.php');
+
+ require_once $this->plugin_dir . 'includes/admin-manage.php';
}
- function edit_snippets() {
+ function admin_edit_loader() {
global $wpdb;
- $msg = '';
if( isset( $_POST['save_snippet'] ) ) {
$name = mysql_real_escape_string( htmlspecialchars( $_POST['snippet_name' ] ) );
$description = mysql_real_escape_string( htmlspecialchars( $_POST['snippet_description'] ) );
@@ -306,14 +270,14 @@ function edit_snippets() {
if( strlen( $name ) && strlen( $code ) ) {
if( isset($_POST['edit_id'] ) ) {
- $wpdb-> query( "update $this->table_name set name='".$name."',
+ $wpdb-> query( "update $this->table set name='".$name."',
description='".$description."',
code='".$code."'
where id=" . intval($_POST["edit_id"]." limit 1"));
$msg = 'Snippet updated.';
}
else {
- $wpdb->query( "insert into $this->table_name(name,description,code,active) VALUES ('$name','$description','$code',0)" );
+ $wpdb->query( "insert into $this->table(name,description,code,active) VALUES ('$name','$description','$code',0)" );
$msg = 'Snippet added.';
}
}
@@ -321,62 +285,31 @@ function edit_snippets() {
$msg = 'Please provide a name for the snippet and the code.';
}
}
- require_once( $this->dirname . '/inc/edit-snippets.php');
+ require_once $this->plugin_dir . 'includes/admin-edit.php';
}
-
- function edit_snippets_title( $admin_title, $title ) {
-
- $title = 'Edit Snippet';
-
- if ( is_network_admin() )
- $admin_title = __( 'Network Admin' );
- elseif ( is_user_admin() )
- $admin_title = __( 'Global Dashboard' );
- else
- $admin_title = get_bloginfo( 'name' );
-
- if ( $admin_title == $title )
- $admin_title = sprintf( __( '%1$s — WordPress' ), $title );
- else
- $admin_title = sprintf( __( '%1$s ‹ %2$s — WordPress' ), $title, $admin_title );
-
- return $admin_title;
+
+ function settings_link( $links ) {
+ array_unshift( $links, '' . __('Manage') . '' );
+ return $links;
}
- function uninstall_plugin(){
- $msg = '';
- if( isset( $_POST['uninstall'] ) ) {
- if(isset( $_POST['ch_unin']) ) {
- update_option('cs_complete_uninstall' , 1);
- $msg = 'Option updated. Please deactivate the Code Snippets plugin to clear all data.';
- }
- else {
- update_option('cs_complete_uninstall', 0);
- $msg = 'Option updated. Code Snippets will retain its data when deactivated';
- }
- }
- require_once( $this->dirname . '/inc/uninstall-plugin.php');
- }
-
- function settings_link( $links, $file ){
- static $this_plugin;
- if ( ! $this_plugin ) {
- $this_plugin = plugin_basename( __FILE__ );
- }
- if ( $file == $this_plugin ) {
- $settings_link = 'Settings';
- array_unshift( $links, $settings_link );
+ function plugin_meta( $links, $file ) {
+ if ( $file == $this->basename ) {
+ return array_merge( $links, array(
+ '' . __( 'About' ) . '',
+ '' . __( 'Support' ) . ''
+ ) );
}
return $links;
}
-
+
function run_snippets() {
global $wpdb;
// grab the active snippets from the database
- $active_snippets = $wpdb->get_results( 'select * FROM `' . $this->table_name . '` WHERE `active` = 1;' );
+ $active_snippets = $wpdb->get_results( 'select * FROM `' . $this->table . '` WHERE `active` = 1;' );
if( count( $active_snippets ) ) {
foreach( $active_snippets as $snippet ) {
- // execute the php code
+ // execute the php code
$result = @eval( htmlspecialchars_decode( stripslashes( $snippet->code ) ) );
}
}
@@ -386,6 +319,12 @@ function run_snippets() {
endif; // class exists check
global $cs;
-$cs = new code_snippets;
+$cs = new Code_Snippets;
+
+register_uninstall_hook( __FILE__, 'cs_uninstall' );
-?>
\ No newline at end of file
+function cs_uninstall() {
+ global $wpdb, $cs;
+ $wpdb->query( "DROP TABLE IF EXISTS `$cs->table`" );
+ delete_option( 'cs_db_version' );
+}
\ No newline at end of file
diff --git a/css/style.css b/css/style.css
index 5d828b97..39c20b50 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1,10 +1,10 @@
-#icon-snippets.icon32{
- background: url('../img/icon32.png') no-repeat scroll transparent;
+#icon-snippets.icon32 {
+ background: url('../images/icon32.png') no-repeat scroll transparent;
}
/* Snippets > Manage Snippets */
-.inactive a:hover{
+.inactive a:hover {
color: #d54e21;
}
@@ -13,17 +13,17 @@ a.delete:hover {
border-bottom-color: #f00;
}
-a.delete{
+a.delete {
color: #21759b;
}
-tr{
+tr {
background-color: #fcfcfc;
}
.inactive,
.inactive th,
-.inactive td{
+.inactive td {
background-color: #f4f4f4;
}
diff --git a/img/icon16.png b/images/icon16.png
similarity index 100%
rename from img/icon16.png
rename to images/icon16.png
diff --git a/img/icon32.png b/images/icon32.png
similarity index 100%
rename from img/icon32.png
rename to images/icon32.png
diff --git a/img/icon-big.png b/img/icon-big.png
deleted file mode 100644
index 3889159d23eb0858c077424c4224d13b1983c08d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 34722
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
Dvnu9E
diff --git a/img/icon-horiz.png b/img/icon-horiz.png
deleted file mode 100644
index 2f383c6619ae74ab56ded717112e8a18203bb3ce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 13650
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
diff --git a/img/icon-med.png b/img/icon-med.png
deleted file mode 100644
index 7f13caafc97515cae52524a537e36e36d0f8c6ef..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 15744
zcmX9_19Y8D*NyF@jcwbFZQHi(=kiB6qmw|H=g|D6`liQ<2SQ^OMr^lBelNTZe(y(>}VbHlUbBmW=lL4W{SiAO$Pf
z>t;mJ)MsZ7mN@zb;>G|B_9Wl!y7MGBJba{O7s@q6v@0OBi;vmvb<5lfh15i?{$c8)QI
z8eCk-r@hwf+NEh&Km|2gKNSi8xEoz?cclqa^{A)#q4e0nB1>XNiZw)lS=8K{y1rF%
zP8bGh6P84r599}<%kMq#<5>_vYO<+u97yn24sMQ_yfg*!6%<$4AASDYJDyp}TB!~RR(Q_>o{
zvSU}2hHu-cG1&0TprfOs&7e=BWxH$1usepOtP=drmlylmdaEIr@~I|rA$`X*R4G!ee0N6W|S2b42!B)tgLUjtM(0
zDR`-!dy^9;_cPpP-U1BTMOfBThfyg6;&ma!K0ZE&hlgM+Uf23{eScw=FBnfi@{}p*
ztDLJwN;W#U5o2Ns3h}Zs3{*1QY7{ZTcCGgmcqh)V${4?BDFwQd{QLB7Iy3X~2;$~h
z^_j5K)6<()EtAV^x@0Ip?OUGw;o(#gC`r-jbNEpco8!}y`{eCg2*F*aWAyHQx)`Zu?Qf?CxAap|%Wye^Gp}TrE2~2xG11%QT
z*o@sSE7F!OMKNAF-QGM+9KCyRh)}^0zcQ%j4=sRHNLqs+6;ROdEUq>@YVNglb&X$_
z`3X=Qd(G&3X
za0qkx>R5Se_F39HQfVNr(up2?%apde9!s&Xu*M_w`-d8HHC3DNqdOZNPMGwW8XNr<
zNTFz$m^AaLsZrcw`J>4|suPdiWv+^zo?O4$wo3W5x^fAr+{l4_)D!ITIKPpJMC*5K
z|9&0Td6%W%BV!%%ZO!lU0!^_5&02bJpB)&4Nj5>Mb>0wc
z@cU^+T3VK)9#?Msuj?+mb0?!n=M))}%p`Y9sS>yrQLzi?*X!^^
zs@vVBboy+86WgqvRnk21(&E%vR(Y%t%{7p1DkKRtb!7Lo>UED2ce9vpch^k_>^nz8
zy%>*-XB#D`k%}x8vSoJ9cXwmFGR<9DDC*aB?`vo#Zx|RauWU%0d;%Q&FWNlw-5eWhasbXEh)}jXlg5nsy=jbFKV4gw`
zNk(z&{H9#oVERl`v~irO$X9o9kq`TR*PU8N)!i!o>$DL|n;jpHL7#*CrZ%T%rrMqj
z&CT>>*w|QD4IUSo%g!~qgssvw5i1P3!#yurQ&>2L^&ErXy2$zNUhU%Or(f3xo}TDQ
z3ytT9%H2AmDP{-|(a#92=Y~*Iv(tGW+b1`{aMa-VN{9?qlW8CVbUbe-(?QU_0Gcd~
zBUTFA+S!~jza;p*yBVk-!}Ra&7TH>pEXd4Y{R<3a!UW+^uCQks8U1b9Az2EqLf++N
zb=b1-b0}ZqevDIX@@3G~)s;#9zr(?kzmT&%5*6Q44a~@UcV22@y2sY>^wKK0n6zB@
zS&F?gn?wc57mCFvSWHX|2`Q|OA|@uL