Plugin Directory

Changeset 1966845


Ignore:
Timestamp:
10/31/2018 10:33:25 PM (7 years ago)
Author:
kshaner
Message:

Jarvis 1.0.0

Location:
jarvis/trunk
Files:
9 added
7 edited

Legend:

Unmodified
Added
Removed
  • jarvis/trunk/README.md

    r1405943 r1966845  
    1414* Edit your contact page: `/` + `Contact` + enter and you're there.
    1515* Access your post about caving in Nigeria from last year: `/` + `Nigeria Caving` + enter and you're there.
     16* Flush the site rewrite rules: `/` + `Flush Rewrite Rules` + enter
    1617
    1718The idea is to make it easier for anyone using the admin side of WordPress to get to the pages they're looking for.
     
    3536### It's still not working...
    3637
    37 You may be on a page that's focusing on a text area or input box. If this is the case just click somewhere on the page outside of these boxes and the hit /.
     38You may be on a page that's focusing on a text area or input box. If this is the case just click somewhere on the page outside of these boxes and the hit /. You can also click the search icon next to the avatar in the top admin menu bar.
     39
     40## Extend
     41
     42Jarvis is extendable to include your custom plugin data though filters.  See https://github.com/WDGDC/Jarvis/wiki/Extending-Jarvis
    3843
    3944## Changelog
     
    56617. 0.51.0
    5762  * Add post type check to search query to only query post types shown in wp-admin
     638. 1.0.0
     64  * Rewrite most of Jarvis
     65  * User search
     66  * Mobile compatibility
     67  * Add Instant Actions that can be selected that are not in the admin menu
     68  * Nonce security for searches
     69  * Theme support!
     70  * Improved icon detection methods such as dashicons with custom fonts
     71  * Hi-DPI loading icon
     72  * Drop support for IE < 11
     73  * New gulp build pipeline
     74  * Remove Hogan in favor of underscore templates
    5875
     76## Develop
     77
     78The plugin now uses a gulp based build pipeline that can be executed through npm scripts.
     79
     80* requires `node` 8 and `npm` 5 or higher, should work with `node` 6 but haven't tested
     81* Public dependencies should be installed with npm using `npm i package-name --save`, while dev depenedencies like gulp should be installed with `npm i package-name --save-dev`
     82
     83### Commands
     84
     85* `npm run build:js` will compile javascript files using babel into the dist directory
     86* `npm run build:scss` will compile scss files using sass & autoprefixer into the dist directory
     87* `npm run vendor` will copy front end dependencies from node_modules to dist/vendor
     88* `npm run build` will run the build:js, build:scss, and vendor tasks simultaneously
     89* `npm run watch` will start watching for changes in js and scss files
     90* `npm start` will run the build and vendor tasks simultaneously followed by the watch task - this is the default task
     91* `npm run release` will create a zip the current build of the plugin to be included in a github release`
    5992
    6093## Authors
     
    6396* Joan Piedra
    6497* Kurtis Shaner
     98* Doug Axelrod
    6599
    66 Learn more about [The Web Development Group](http://www.webdevelopmentgroup.com), our [services](www.webdevelopmentgroup.com/services/) and [WordPress work](http://www.webdevelopmentgroup.com/work/).
     100Learn more about [The Web Development Group](http://www.webdevelopmentgroup.com), our [services](https://www.webdevelopmentgroup.com/services/) and [WordPress work](http://www.webdevelopmentgroup.com/work/).
  • jarvis/trunk/dist

    • Property svn:ignore set to
      .git
  • jarvis/trunk/gulpfile.js

    r1393311 r1966845  
    1 var package      = require('./package.json');
    2 var gulp         = require('gulp');
    3 var concat       = require('gulp-concat');
    4 var uglify       = require('gulp-uglify');
    5 var header       = require('gulp-header');
    6 var insert       = require('gulp-insert');
     1const package      = require('./package.json');
     2const nodePath     = require('path');
    73
    8 var banner = [
    9   '/**',
    10   ' * <%= pkg.name %> - <%= pkg.description %>',
    11   ' * @version v<%= pkg.version %>',
    12   ' * @link <%= pkg.homepage %>',
    13   ' * @license <%= pkg.license %>',
    14   ' */',
    15   '',
    16   ''
    17 ].join('\n');
     4const autoprefixer = require('gulp-autoprefixer');
     5const babel        = require('gulp-babel');
     6const concat       = require('gulp-concat');
     7const gulp         = require('gulp');
     8const header       = require('gulp-header');
     9const sass         = require('gulp-sass');
     10const sassGlob     = require('gulp-sass-glob');
     11const sourcemaps   = require('gulp-sourcemaps');
     12const uglify       = require('gulp-uglify');
     13const zip          = require('gulp-zip');
    1814
    19 var dist = __dirname + '/dist';
     15const project = {
     16    root: nodePath.posix.normalize(__dirname)
     17};
    2018
    21 gulp.task('vendor', function() {
    22     gulp.src('node_modules/hogan.js/dist/*.js').pipe(gulp.dest(dist + '/hogan'));
    23     gulp.src('node_modules/typeahead.js/dist/*.js').pipe(gulp.dest(dist + '/typeahead'));
    24 });
     19project.node    = nodePath.posix.normalize(`${project.root}/node_modules`);
     20project.src     = nodePath.posix.normalize(`${project.root}/src`);
     21project.js      = nodePath.posix.normalize(`${project.src}/js`);
     22project.scss    = nodePath.posix.normalize(`${project.src}/scss`);
     23project.dist    = nodePath.posix.normalize(`${project.root}/dist`);
     24project.vendor  = nodePath.posix.normalize(`${project.dist}/vendor`);
     25project.release = nodePath.posix.normalize(`${project.dist}/release`);
    2526
    26 gulp.task('js', function() {
    27     gulp.src([
    28         __dirname + '/src/util.js',
    29         __dirname + '/src/jarvis.js'
    30     ])
    31         .pipe(concat('jarvis.js'))
    32         .pipe(insert.wrap('(function(window, $, options, Bloodhound, Hogan) {\n\n', '\n\n})(this, window.jQuery, window.jarvisOptions, window.Bloodhound, window.Hogan);'))
    33         .pipe(header(banner, { pkg : package } ))
    34         .pipe(gulp.dest(dist));
    35 });
     27const banner = `/**
     28 * <%= package.name %> - <%= package.description %>
     29 * @version v<%= package.version %>
     30 * @link <%= package.homepage %>
     31 * @license <%= package.license %>
     32 */
    3633
    37 gulp.task('uglify', function() {
    38     var pipe = gulp.src(dist + '/jarvis.js')
    39         .pipe(uglify({
    40             preserveComments: 'license'
    41         }).on('error', function(err) {
    42             console.error(err);
    43         }))
    44         .pipe(concat('jarvis.min.js'))
    45         .pipe(gulp.dest(dist));
     34`;
    4635
    47         return pipe;
    48 });
     36const js = () => {
     37    return gulp.src( `${project.js}` + '/**/*.js' )
     38        .pipe( sourcemaps.init() )
     39        .pipe( babel( {
     40            presets: [
     41                [
     42                    '@babel/preset-env',
     43                    {
     44                        "useBuiltIns": "entry"
     45                    }
     46                ]
     47            ]
     48        } ) )
     49        .pipe( uglify() )
     50        .pipe( header( banner, { package: package } ) )
     51        .pipe( sourcemaps.write('.') )
     52        .pipe( gulp.dest( project.dist ) );
     53}
    4954
    50 gulp.task('build', [
    51     'vendor',
    52     'js',
    53     'uglify'
    54 ]);
     55const scss = () => {
     56    return gulp.src( [`${project.scss}/**/*.scss`, `!_*.scss`] )
     57        .pipe( sourcemaps.init() )
     58        .pipe( sassGlob() )
     59        .pipe( sass( {
     60            outputStyle: 'expanded'
     61        } ).on( 'error', sass.logError ) )
     62        .pipe( autoprefixer() )
     63        .pipe( header( banner, { package: package } ) )
     64        .pipe( sourcemaps.write('.') )
     65        .pipe( gulp.dest( project.dist ) );
     66}
    5567
    56 gulp.task('watch', function() {
    57     gulp.watch(__dirname + '/templates/*.hbs', ['templates']);
    58     gulp.watch(__dirname + '/src/*.js', ['js']);
    59     gulp.watch(dist + '/jarvis.js', ['uglify']);
    60 });
     68const vendor = () => {
     69    const npmFiles = Object.keys(package.dependencies).map((name) => `${project.node}/${name}/**/*`);
    6170
    62 gulp.task('default', [
    63     'build',
    64     'watch'
    65 ]);
     71    return gulp.src(npmFiles, { base: project.node })
     72        .pipe(gulp.dest(project.vendor));
     73}
     74
     75const watch = () => {
     76    gulp.watch( `${project.js}/**/*.js`, js );
     77    gulp.watch( `${project.scss}/**/*.scss`, scss );
     78}
     79
     80const release = () => {
     81    // exlude folders from being included like svn / git / node_modules
     82    return gulp.src( [
     83        `./**/*`,
     84        `./**/.*`,
     85        `!.git`,
     86        `!.git/**/*`,
     87        `!.svn`,
     88        `!.svn/**/*`,
     89        `!branches`,
     90        `!branches/**/*`,
     91        `!node_modules`,
     92        `!node_modules/**/*`,
     93        `!tags`,
     94        `!tags/**/*`,
     95        `!trunk`,
     96        `!trunk/**/*`,
     97        `!jarvis-release.zip`,
     98    ])
     99    .pipe( zip( 'jarvis-release.zip' ) )
     100    .pipe( gulp.dest( project.root ) );
     101}
     102
     103const build = gulp.parallel( vendor, js, scss );
     104
     105gulp.task( 'build', build );
     106gulp.task( 'build:js', js );
     107gulp.task( 'build:scss`', scss );
     108gulp.task( 'vendor', vendor );
     109gulp.task( 'watch', watch );
     110gulp.task( 'release', release );
     111gulp.task( 'default', gulp.series( build, watch ) );
  • jarvis/trunk/jarvis.php

    r1405943 r1966845  
    11<?php
    22/*
    3 Plugin Name:    Jarvis
    4 Plugin URI:     http://www.wpjarvis.com
    5 Description:    Jarvis is your administration assistant, putting WordPress at your fingertips.
    6 Version:        0.51.0
    7 Author:         wdgdc, David Everett, Joan Piedra, Kurtis Shaner
    8 Author URI:     http://www.webdevelopmentgroup.com
    9 License:        GPLv2 or later
    10 Text Domain:    jarvis
     3Plugin Name: Jarvis
     4Plugin URI: http://www.wpjarvis.com
     5Description: Jarvis is your administration assistant, putting WordPress at your fingertips.
     6Version: 1.0.0
     7Author: The Web Development Group, David Everett, Joan Piedra, Kurtis Shaner, Doug Axelrod
     8Author URI: http://www.wdg.co
     9License: GPLv2 or later
     10Text Domain: jarvis
    1111*/
    1212
    13 class Jarvis {
     13namespace Jarvis;
    1414
    15     private static $_instance;
    16     public static function get_instance() {
    17         if (empty(self::$_instance)) {
    18             self::$_instance = new self();
    19         }
    20         return self::$_instance;
     15define( 'JARVIS_PATH', __DIR__ );
     16define( 'JARVIS_URI', plugins_url( '', __FILE__ ) );
     17
     18spl_autoload_register( function( $class_name ) {
     19    if ( ! preg_match( '/^' . __NAMESPACE__ . '/', $class_name ) ) {
     20        return;
    2121    }
    2222
    23     private $options = array(
    24         'hotkey' => '/',
    25         'keyCode' => 191,
    26         'loadingimg' => 'img/wpspin.gif',
    27         'dashicons' => false
    28     );
     23    $path = preg_replace( '/^' . __NAMESPACE__. '/', __DIR__ . '/src/php', $class_name );
     24    $path = strtolower( str_replace( [ '\\', '_' ], [ '/', '-' ], $path ) ) . '.php';
    2925
    30     private function __construct() {
    31         global $wp_version;
    32         $this->options['loadingimg'] = plugins_url($this->options['loadingimg'], __FILE__);
    33         $this->options['dashicons'] = (version_compare($wp_version, '3.8', '>=')) ? true : false;
     26    if ( file_exists( $path ) ) {
     27        require_once $path;
     28    }
     29} );
    3430
    35         add_action('admin_bar_menu', array($this, 'menubar_icon'), 100);
    36         add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
    37         add_action('admin_init', array($this, 'admin_init'));
    38         add_action('edit_user_profile', array($this, 'show_user_profile'));
    39         add_action('edit_user_profile_update', array($this, 'edit_user_profile_update'));
    40         add_action('personal_options_update', array($this, 'edit_user_profile_update'));
    41         add_action('show_user_profile', array($this, 'show_user_profile'));
    42         add_action('wp_ajax_jarvis-search', array($this, 'get_search_results'), 1);
    43 
    44     }
    45 
    46     /**
    47      * Grab the users keycode setting
    48      *
    49      * @access public
    50      * @action admin_init
    51      */
    52     public function admin_init() {
    53         if ($user_keycode = get_user_meta(get_current_user_id(), 'jarvis_keycode', true)) {
    54             $this->options['keyCode'] = (int) $user_keycode;
    55         }
    56         if ($user_hotkey = get_user_meta(get_current_user_id(), 'jarvis_hotkey', true)) {
    57             $this->options['hotkey'] = $user_hotkey;
    58         }
    59     }
    60 
    61     /**
    62      * Add the field and script to customize the Jarvis keyCode
    63      *
    64      * @access public
    65      * @action show_user_profile, edit_user_profile
    66      */
    67     public function show_user_profile( $user ) { ?>
    68         <h3>Jarvis</h3>
    69 
    70         <table class="form-table">
    71             <tr>
    72                 <th><label for="jarvis-hotkey">Hotkey</label></th>
    73                 <td>
    74                     <p><input type="text" name="jarvis_hotkey" id="jarvis_hotkey" value="<?php echo $this->options['hotkey']; ?>" class="regular-text" autocomplete="off" style="width:25px;text-align:center;" /></p>
    75                     <p><span class="description">Enter the key you would like to invoke jarvis with. Supports lowercase a-z, 0-9, and any of these special characters: ; = , - . / ` [ \ ] ' only.</span></p>
    76                     <input type="hidden" id="jarvis_keycode" name="jarvis_keycode" value="<?php echo $this->options['keyCode']; ?>">
    77                 </td>
    78             </tr>
    79         </table>
    80 
    81         <script>
    82             (function() {
    83                 var hotKey  = document.getElementById('jarvis_hotkey');
    84                 var keyCode = document.getElementById('jarvis_keycode');
    85                 var keys = {
    86                     "0":48,"1":49,"2":50,"3":51,"4":52,"5":53,"6":54,"7":55,"8":56,"9":57,"a":65,"b":66,"c":67,"d":68,"e":69,"f":70,
    87                     "g":71,"h":72,"i":73,"j":74,"k":75,"l":76,"m":77,"n":78,"o":79,"p":80,"q":81,"r":82,"s":83,"t":84,"u":85,"v":86,
    88                     "w":87,"x":88,"y":89,"z":90,";":186,"=":187,",":188,"-":189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222
    89                 };
    90                 var keyCodes = [];
    91                 for(var key in keys) {
    92                     if (keys.hasOwnProperty(key)) {
    93                         keyCodes.push(keys[key]);
    94                     }
    95                 }
    96 
    97                 var keyUp = function(e) {
    98                     if (keyCodes.indexOf(e.which) > -1) {
    99                         this.value = this.value.charAt(0).toLowerCase();
    100                         keyCode.value = keys[this.value];
    101                     } else {
    102                         this.value = '';
    103                         keyCode.value = '';
    104                     }
    105                 }
    106                 jQuery(hotKey).on('keyup', keyUp);
    107             })();
    108         </script>
    109     <?php }
    110 
    111     /**
    112      * Save user fields
    113      *
    114      * @access public
    115      * @action personal_options_update, edit_user_profile_update
    116      */
    117     public function edit_user_profile_update( $user_id ) {
    118         if ( current_user_can( 'edit_user', $user_id ) ) {
    119             update_user_meta( $user_id, 'jarvis_hotkey', $_POST['jarvis_hotkey'] );
    120             update_user_meta( $user_id, 'jarvis_keycode', $_POST['jarvis_keycode'] );
    121         }
    122     }
    123 
    124     /**
    125      * Enqueue jarvis style and scripts
    126      *
    127      * @access public
    128      * @action admin_enqueue_scripts
    129      */
    130     public function admin_enqueue_scripts() {
    131         if (is_user_logged_in()) {
    132             wp_enqueue_style('wp-jarvis', plugins_url('css/jarvis.css', __FILE__));
    133             wp_register_script('typeahead', plugins_url('dist/typeahead/typeahead.bundle.min.js', __FILE__), array('jquery'));
    134             wp_register_script('hogan', plugins_url('dist/hogan/hogan-3.0.2.min.js', __FILE__), null, '3.0.2');
    135             wp_enqueue_script('wp-jarvis', plugins_url('dist/jarvis.min.js', __FILE__), array('jquery', 'typeahead', 'hogan'), '0.50.0');
    136             wp_localize_script('wp-jarvis', 'jarvisOptions', $this->options);
    137         }
    138     }
    139 
    140     /**
    141      * Add Jarvis to the menu bar as a search icon
    142      *
    143      * @access public
    144      * @action admin_footer
    145      */
    146     public function menubar_icon($admin_bar) {
    147         $className = ($this->options['dashicons'] === true) ? 'dashicon' : 'image';
    148 
    149         $admin_bar->add_menu(array(
    150             'id' => 'jarvis_menubar_icon',
    151             'title' => '<span>Jarvis Search</span>',
    152             'href' => '#jarvis',
    153             'meta' => array(
    154                 'title' => 'Invoke Jarvis',
    155                 'class' => $className
    156             ),
    157             'parent' => 'top-secondary'
    158         ));
    159     }
    160 
    161     /**
    162      * Prepend post_id search to main search query
    163      *
    164      * @access private
    165      */
    166     private function search_post_id($id = null) {
    167         if (!empty($id)) {
    168             $post = get_post($id);
    169 
    170             if (!empty($post)) {
    171 
    172                 $post_result = (object) array(
    173                     'id'    => $post->ID,
    174                     'title' => apply_filters('the_title', $post->post_title) . " - (ID $id)",
    175                     'type'  => $post->post_type,
    176                     'kind'  => $post->post_type,
    177                     'isId'  => true
    178                 );
    179 
    180                 array_unshift($this->results, $post_result);
    181             }
    182         }
    183     }
    184 
    185     /**
    186      * Grab the item edit url's and thumbnails
    187      *
    188      * @access private
    189      */
    190     private function normalize($result) {
    191         $typeEditPaths = array(
    192             '_default_' => 'post.php?post=%s&action=edit',
    193             'term'      => 'edit-tags.php?action=edit&tag_ID=%s&taxonomy=%s',
    194             'post'      => 'post.php?post=%s&action=edit'
    195         );
    196         $editUrl = (isset($typeEditPaths[$result->kind])) ? $typeEditPaths[$result->kind] : $typeEditPaths['_default_'];
    197 
    198         $result->href = admin_url(sprintf($editUrl, $result->id, $result->type));
    199 
    200         switch($result->type) {
    201             case 'attachment':
    202                 $result->att_src = wp_get_attachment_image_src($result->id, array(28,28));
    203                 $result->att_src = $result->att_src[0];
    204                 break;
    205             case 'post':
    206                 $result->att_src = wp_get_attachment_image_src(get_post_thumbnail_id($result->id, array(28,28)));
    207                 $result->att_src = $result->att_src[0];
    208                 break;
    209         }
    210 
    211         return $result;
    212     }
    213 
    214     /**
    215      * Grab the item edit url's and thumbnails
    216      *
    217      * @access public
    218      * @action wp_ajax_jarvis-search
    219      */
    220 
    221     public function get_search_results() {
    222         global $wpdb;
    223 
    224         // Don't break the json if debug is off
    225         if (!defined('WP_DEBUG') || !WP_DEBUG) {
    226             error_reporting(0);
    227         }
    228 
    229         $_REQUEST['q'] = isset($_REQUEST['q']) ? $_REQUEST['q'] : '';
    230 
    231         $srch_qry = $wpdb->esc_like($_REQUEST['q']);
    232         $srch_escaped_spaces = '%'.str_replace(' ', '%', $srch_qry).'%';
    233 
    234         $post_types = "'".implode("','", array_values(get_post_types(array('show_ui' => true))))."'";
    235 
    236         $strQry = "SELECT
    237                 $wpdb->terms.term_id as 'id',
    238                 $wpdb->terms.`name` as 'title',
    239                 $wpdb->term_taxonomy.taxonomy as 'type',
    240                 'term' as 'kind',
    241                 $wpdb->terms.slug as 'slug',
    242                 FLOOR( (LENGTH($wpdb->terms.term_id) - LENGTH(REPLACE(LOWER($wpdb->terms.term_id), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_id',
    243                 FLOOR( (LENGTH($wpdb->term_taxonomy.taxonomy) - LENGTH(REPLACE(LOWER($wpdb->term_taxonomy.taxonomy), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_title',
    244                 FLOOR( (LENGTH($wpdb->terms.`name`) - LENGTH(REPLACE(LOWER($wpdb->terms.`name`), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_type',
    245                 FLOOR( LENGTH($wpdb->terms.slug) / LENGTH(REPLACE(LOWER($wpdb->terms.slug), LOWER(%s), '')) ) as 'relv_slug'
    246             FROM
    247                 $wpdb->terms
    248             INNER JOIN
    249                 $wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
    250             WHERE
    251                 $wpdb->terms.`name` LIKE %s
    252             OR
    253                 $wpdb->terms.slug LIKE %s
    254         UNION
    255             SELECT
    256                 $wpdb->posts.ID as 'id',
    257                 $wpdb->posts.post_title as 'title',
    258                 $wpdb->posts.post_type as 'type',
    259                 'post' as 'kind',
    260                 $wpdb->posts.post_name as 'slug',
    261                 FLOOR( (LENGTH($wpdb->posts.ID) - LENGTH(REPLACE(LOWER($wpdb->posts.ID), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_id',
    262                 FLOOR( (LENGTH($wpdb->posts.post_title) - LENGTH(REPLACE(LOWER($wpdb->posts.post_title), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_title',
    263                 FLOOR( (LENGTH($wpdb->posts.post_type) - LENGTH(REPLACE(LOWER($wpdb->posts.post_type), LOWER(%s), '')) / LENGTH(%s)) ) as 'relv_type',
    264                 FLOOR( (LENGTH($wpdb->posts.post_name) / LENGTH(REPLACE(LOWER($wpdb->posts.post_name), LOWER(%s), '')) ) ) as 'relv_slug'
    265             FROM
    266                 $wpdb->posts
    267             WHERE
    268                 $wpdb->posts.post_status NOT IN ('revision', 'auto-draft') AND $wpdb->posts.post_type <> 'revision'
    269             AND
    270                 $wpdb->posts.post_type IN ($post_types)
    271             AND (
    272                 $wpdb->posts.post_title LIKE %s
    273                 OR
    274                 $wpdb->posts.post_name LIKE %s
    275             )
    276         ORDER BY relv_id, relv_slug, relv_type, relv_title DESC
    277         LIMIT 20
    278         ";
    279 
    280         $sql_prepared = array(
    281             $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry,
    282             $srch_escaped_spaces, $srch_escaped_spaces,
    283             $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry, $srch_qry,
    284             $srch_escaped_spaces, $srch_escaped_spaces
    285         );
    286 
    287         $this->results = $wpdb->get_results( $wpdb->prepare($strQry, $sql_prepared) );
    288 
    289         $this->search_post_id($_REQUEST['q']);
    290         $this->results = array_map(array($this, 'normalize'), $this->results);
    291 
    292         wp_send_json_success($this->results);
    293     }
    294 }
    295 
    296 if (is_admin()) {
    297     Jarvis::get_instance();
    298 }
    299 ?>
     31add_action( 'plugins_loaded', __NAMESPACE__ . '\Plugin::get_instance' );
  • jarvis/trunk/package.json

    r1405943 r1966845  
    11{
    22  "name": "jarvis",
    3   "version": "0.51.0",
     3  "version": "1.0.0",
    44  "description": " Jarvis is your admin assistant, putting WordPress at your fingertips via a quicksearch interface.",
    55  "main": "index.js",
    66  "scripts": {
    7     "gulp": "gulp"
     7    "build": "gulp build",
     8    "build:js": "gulp build:js",
     9    "build:scss": "gulp build:scss",
     10    "watch": "gulp watch",
     11    "vendor": "gulp vendor",
     12    "release": "gulp release",
     13    "start": "gulp"
    814  },
    915  "repository": {
     
    1824  "homepage": "https://github.com/WDGDC/Jarvis#readme",
    1925  "devDependencies": {
    20     "gulp": "^3.9.1",
     26    "@babel/core": "^7.1.2",
     27    "@babel/preset-env": "^7.1.0",
     28    "gulp": "^4.0.0",
     29    "gulp-autoprefixer": "^6.0.0",
     30    "gulp-babel": "^8.0.0",
    2131    "gulp-concat": "^2.6.0",
    22     "gulp-header": "^1.7.1",
     32    "gulp-header": "^2.0.5",
    2333    "gulp-insert": "^0.5.0",
    24     "gulp-uglify": "^1.5.3"
     34    "gulp-sass": "^4.0.1",
     35    "gulp-sass-glob": "^1.0.9",
     36    "gulp-sourcemaps": "^2.6.4",
     37    "gulp-uglify": "^3.0.1",
     38    "gulp-zip": "^4.2.0"
    2539  },
    2640  "dependencies": {
    27     "hogan.js": "^3.0.2",
    2841    "typeahead.js": "^0.11.1"
    2942  }
  • jarvis/trunk/readme.txt

    r1405943 r1966845  
    66Author URI: http://www.webdevelopmentgroup.com
    77Author: wdgdc
    8 Requires at least: 3.3
    9 Tested up to: 4.5.1
    10 Stable tag: 0.51.0
    11 Version: 0.51.0
     8Requires at least: 4.8
     9Tested up to: 4.9.8
     10Stable tag: 1.0.0
     11Version: 1.0.0
    1212License: GPLv2 or later
    1313License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    2525*   Edit your contact page: `/` + `Contact` + enter and you're there.
    2626*   Access your post about caving in Nigeria from last year: `/` + `Nigeria Caving` + enter and you're there.
     27*   Flush the site rewrite rules: `/` + `Flush Rewrite Rules` + enter
    2728
    2829The idea is to make it easier for anyone using the admin side of WordPress to get to the pages they're looking for.
    2930
    30 Learn more about [The Web Development Group](http://www.webdevelopmentgroup.com), our [web design process](http://www.webdevelopmentgroup.com/services/web-design) and [WordPress development experience](http://www.webdevelopmentgroup.com/services/wordpress-development).
     31Each user can also cusomize their own quick key, and color scheme!
     32
     33Learn more about [The Web Development Group](http://www.webdevelopmentgroup.com)
    3134
    3235
    3336== Installation ==
    3437
    35 1.   Upload the plugin folder to the /wp-content/plugins/ directory
    36 1.   Activate the plugin through the 'Plugins' menu in WordPress
    37 1.   Type `/` anywhere in the admin section of WordPress or click the Jarvis button in the toolbar.
    38 
     381. Upload the plugin folder to the /wp-content/plugins/ directory
     392. Activate the plugin through the 'Plugins' menu in WordPress
     403. Type `/` anywhere in the admin section of WordPress or click the Jarvis button in the toolbar.
    3941or
    4042
    4143Install using the Plugin Installer.
    4244
    43 == Upgrade Notice ==
    44 
    45 You'll want to upgrade to this version, I guarantee it.
    46 
    4745== Screenshots ==
    4846
    49471. First click the Jarvis button or hit the / button.
     48
    50492. Then start typing your search query. Results will show up below the search box.
     50
     513. Ectoplasm theme - showing the Flush Rewrite Rules action
     52
     534. View image thumbnails for both attachments and featured images
     54
     555. Jarvis on mobile
    5156
    5257== Frequently Asked Questions ==
     
    6166== Changelog ==
    6267
    63 = 0.1 =
    64 * Internal testing at WDG.
     68= 1.0.0 =
     69* Rewrite most of Jarvis
     70* New - User search
     71* New - Mobile compatibility
     72* New - Add Instant Actions that can be selected that are not in the admin menu
     73* New - Nonce security for searches
     74* New - Theme support!
     75* Improved - icon detection methods such as dashicons with custom fonts
     76* Improved - Hi-DPI loading icon
     77* Drop support for IE < 11
     78* New gulp build pipeline
     79* Remove Hogan in favor of underscore templates
     80* Removed - support for old versions of wordpress
     81* Removed - support for IE < 11
    6582
    66 = 0.2 =
    67 * Official initial release.
     83= 0.51.0 =
     84* Add post type check to search query to only query post types shown in wp-admin
    6885
    69 = 0.3 =
    70 * Updated to work with dashicons of WP 3.8+
    71 * Use search icon instead of J as a more intuitive icon
    72 
    73 = 0.31 =
    74 * Quick bug fix for icon issue that lead to database results not being shown
     86= 0.50.0 =
     87* Refactored to use the latest Twitter Typeahead
    7588
    7689= 0.40 =
     
    7992* add user setting for invoking jarvis
    8093
    81 = 0.50.0 =
    82 * Refactored to use the latest Twitter Typeahead
     94= 0.31 =
     95* Quick bug fix for icon issue that lead to database results not being shown
    8396
    84 = 0.51.0 =
    85 * Add post type check to search query to only query post types shown in wp-admin
     97= 0.3 =
     98* Updated to work with dashicons of WP 3.8+
     99* Use search icon instead of J as a more intuitive icon
     100
     101= 0.2 =
     102* Official initial release.
     103
     104= 0.1 =
     105* Internal testing at WDG.
     106
  • jarvis/trunk/src

    • Property svn:ignore set to
      .git
Note: See TracChangeset for help on using the changeset viewer.