diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c90e273 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform EOL normalization +* text=auto \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bc88b13 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + +# Sublime +*.sublime-project +*.sublime-workspace + +# PhpStorm +.idea/ + +# Bin +bin/ + +# Screenshots +screenshots/ + +# Wiki +wiki/ + +# Grunt +node_modules/ +build/ +npm-debug.log + +# Transifex +tx.exe diff --git a/.tx/config b/.tx/config new file mode 100644 index 0000000..75b4657 --- /dev/null +++ b/.tx/config @@ -0,0 +1,8 @@ +[main] +host = https://www.transifex.com + +[wordpress-plugin-boilerplate.wordpress-plugin-boilerplate] +file_filter = wordpress-plugin-boilerplate/languages/wordpress-plugin-boilerplate-.po +source_file = wordpress-plugin-boilerplate/languages/wordpress-plugin-boilerplate.pot +source_lang = en_US +type = PO \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 374e89a..7dfe574 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 1.3.2 (17th May 2015) +* Added more theme support with compatible theme template file which can be overrided. +* Added option to enable auto loading posts for specific post types. +* Added option for comments. Now you can choose to show or hide rather than forcing it to hide automatically. +* Added Chosen (v1.4.2) Javascript by [Harvest](http://harvesthq.github.io/chosen/) +* Added console.logs in the Javascript for debugging. +* Corrected text domain name in plugin header. +* Corrected access to function load_file() from private to public +* Corrected access to function register_scripts_and_styles() from private to public +* Corrected error with uninstall.php file +* Moved function register_scripts_and_styles() to class-auto-load-next-post-admin.php +* Filtered the Javascript to load only on singular posts and the enabled post types. +* Removed security issue by accessing $GLOBALS directly. +* Removed all closing PHP tags omitting at the end of each file. + ## 1.0.0 (4th April 2015) * Initial Release diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..fa851b1 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,81 @@ +module.exports = function(grunt) { + +// Load multiple grunt tasks using globbing patterns +require('load-grunt-tasks')(grunt); + +// Project configuration. +grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + + makepot: { + target: { + options: { + domainPath: 'languages/', // Where to save the POT file. + exclude: ['build/.*'], + mainFile: 'auto-load-next-post.php', // Main project file. + potComments: 'Auto Load Next Post Copyright (c) {{year}}', // The copyright at the beginning of the POT file. + potFilename: 'auto-load-next-post.pot', // Name of the POT file. + type: 'wp-plugin', // Type of project. + updateTimestamp: true, // Whether the POT-Creation-Date should be updated without other changes. + processPot: function( pot, options ) { + pot.headers['report-msgid-bugs-to'] = 'https://github.com/seb86/Auto-Load-Next-Post/issues\n'; + pot.headers['plural-forms'] = 'nplurals=2; plural=n != 1;\n'; + pot.headers['last-translator'] = 'Auto Load Next Post \n'; + pot.headers['language-team'] = 'WP-Translations \n'; + pot.headers['x-poedit-basepath'] = '..\n'; + pot.headers['x-poedit-language'] = 'English\n'; + pot.headers['x-poedit-country'] = 'UNITED STATES\n'; + pot.headers['x-poedit-sourcecharset'] = 'utf-8\n'; + pot.headers['x-poedit-searchpath-0'] = '.\n'; + pot.headers['x-poedit-keywordslist'] = '__;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n'; + pot.headers['x-textdomain-support'] = 'yes\n'; + return pot; + } + } + } + }, + + exec: { + npmUpdate: { + command: 'npm update' + }, + txpull: { // Pull Transifex translation - grunt exec:txpull + cmd: 'tx pull -a --minimum-perc=60' // Change the percentage with --minimum-perc=yourvalue + }, + txpush_s: { // Push pot to Transifex - grunt exec:txpush_s + cmd: 'tx push -s' + }, + }, + + dirs: { + lang: 'languages', + }, + + potomo: { + dist: { + options: { + poDel: false // Set to true if you want to erase the .po + }, + files: [{ + expand: true, + cwd: '<%= dirs.lang %>', + src: ['*.po'], + dest: '<%= dirs.lang %>', + ext: '.mo', + nonull: true + }] + } + }, + +}); + +// Default task. - grunt makepot +grunt.registerTask( 'default', 'makepot' ); + +// Makepot and push it on Transifex task(s). +grunt.registerTask( 'txpush', [ 'makepot', 'exec:txpush_s' ] ); + +// Pull from Transifex and create .mo task(s). +grunt.registerTask( 'txpull', [ 'exec:txpull', 'potomo' ] ); + +}; diff --git a/README.md b/README.md index 012443c..ddc2ea1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,14 @@ ## Auto Load Next Post +[![Built with Grunt](https://cdn.gruntjs.com/builtwith.png?style=flat)](http://gruntjs.com/) [![GitHub version](https://badge.fury.io/gh/seb86%2FAuto-Load-Next-Post.svg?style=flat)](http://badge.fury.io/gh/seb86%2FWordPress-Plugin-Boilerplate) [![GPL license](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat) + Auto Load Next Post is a lightweight plugin that simply loads the next post after one another as you scroll down the page. To do this, it reads the post navigation in your theme at the end of each post and collects the post URL. With this, it asks WordPress to do a partial content load and the javascript places the content of the next post underneath the parent post. It also updates your web history by manipulating the web address and page title so if you were to hit refresh, you will be taken to the post you were viewing last. You will find that when pressing the previous button in your browser to go back you will be taken to the previous post. ### Features +* Can restrict it to load only on specific post types. - NEW in v1.3.2 +* You now have the option to hide the comments if you wish. - NEW in v1.3.2 * Track each post load with Google Analytics. ( Requires Google Analytics to be applied for this to work. ) ### Documentation diff --git a/assets/css/admin/activation.css b/assets/css/admin/activation.css new file mode 100644 index 0000000..12f7d7a --- /dev/null +++ b/assets/css/admin/activation.css @@ -0,0 +1,34 @@ +.auto-load-next-post-message { + position: relative; + border-left-color: #EC8642 !important; + overflow: hidden; +} + +.auto-load-next-post-message a.button-primary, +p.auto-load-next-post-actions a.button-primary { + background: #EC8642; + border-color: #EB6D19; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15); + color: #fff; + text-decoration: none; +} + +.auto-load-next-post-message a.button-primary:hover, +p.auto-load-next-post-actions a.button-primary:hover { + background: #EB6D19; + border-color: #EB6D19; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15); +} + +.auto-load-next-post-message a.button-primary:active, +p.auto-load-next-post-actions a.button-primary:active { + background: #fac75a; + border-color: #EC8642; +} + +.auto-load-next-post-message a.docs, +p.auto-load-next-post-actions a.docs { + opacity: .7; +} \ No newline at end of file diff --git a/assets/css/chosen.css b/assets/css/chosen.css new file mode 100644 index 0000000..794832b --- /dev/null +++ b/assets/css/chosen.css @@ -0,0 +1,450 @@ +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.4.2 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011-2015 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +This file is generated by `grunt build`, do not edit it by hand. +*/ + +/* @group Base */ +.chosen-container { + position: relative; + display: inline-block; + vertical-align: middle; + font-size: 13px; + zoom: 1; + *display: inline; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.chosen-container * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.chosen-container .chosen-drop { + position: absolute; + top: 100%; + left: -9999px; + z-index: 1010; + width: 100%; + border: 1px solid #aaa; + border-top: 0; + background: #fff; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); +} +.chosen-container.chosen-with-drop .chosen-drop { + left: 0; +} +.chosen-container a { + cursor: pointer; +} +.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name { + margin-right: 4px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-weight: normal; + color: #999999; +} +.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after { + content: ":"; + padding-left: 2px; + vertical-align: top; +} + +/* @end */ +/* @group Single Chosen */ +.chosen-container-single .chosen-single { + position: relative; + display: block; + overflow: hidden; + padding: 0 0 0 8px; + height: 25px; + border: 1px solid #aaa; + border-radius: 5px; + background-color: #fff; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4)); + background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%); + background-clip: padding-box; + box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1); + color: #444; + text-decoration: none; + white-space: nowrap; + line-height: 24px; +} +.chosen-container-single .chosen-default { + color: #999; +} +.chosen-container-single .chosen-single span { + display: block; + overflow: hidden; + margin-right: 26px; + text-overflow: ellipsis; + white-space: nowrap; +} +.chosen-container-single .chosen-single-with-deselect span { + margin-right: 38px; +} +.chosen-container-single .chosen-single abbr { + position: absolute; + top: 6px; + right: 26px; + display: block; + width: 12px; + height: 12px; + background: url('../images/chosen-sprite.png') -42px 1px no-repeat; + font-size: 1px; +} +.chosen-container-single .chosen-single abbr:hover { + background-position: -42px -10px; +} +.chosen-container-single.chosen-disabled .chosen-single abbr:hover { + background-position: -42px -10px; +} +.chosen-container-single .chosen-single div { + position: absolute; + top: 0; + right: 0; + display: block; + width: 18px; + height: 100%; +} +.chosen-container-single .chosen-single div b { + display: block; + width: 100%; + height: 100%; + background: url('../images/chosen-sprite.png') no-repeat 0px 2px; +} +.chosen-container-single .chosen-search { + position: relative; + z-index: 1010; + margin: 0; + padding: 3px 4px; + white-space: nowrap; +} +.chosen-container-single .chosen-search input[type="text"] { + margin: 1px 0; + padding: 4px 20px 4px 5px; + width: 100%; + height: auto; + outline: 0; + border: 1px solid #aaa; + background: white url('../images/chosen-sprite.png') no-repeat 100% -20px; + background: url('../images/chosen-sprite.png') no-repeat 100% -20px; + font-size: 1em; + font-family: sans-serif; + line-height: normal; + border-radius: 0; +} +.chosen-container-single .chosen-drop { + margin-top: -1px; + border-radius: 0 0 4px 4px; + background-clip: padding-box; +} +.chosen-container-single.chosen-container-single-nosearch .chosen-search { + position: absolute; + left: -9999px; +} + +/* @end */ +/* @group Results */ +.chosen-container .chosen-results { + color: #444; + position: relative; + overflow-x: hidden; + overflow-y: auto; + margin: 0 4px 4px 0; + padding: 0 0 0 4px; + max-height: 240px; + -webkit-overflow-scrolling: touch; +} +.chosen-container .chosen-results li { + display: none; + margin: 0; + padding: 5px 6px; + list-style: none; + line-height: 15px; + word-wrap: break-word; + -webkit-touch-callout: none; +} +.chosen-container .chosen-results li.active-result { + display: list-item; + cursor: pointer; +} +.chosen-container .chosen-results li.disabled-result { + display: list-item; + color: #ccc; + cursor: default; +} +.chosen-container .chosen-results li.highlighted { + background-color: #3875d7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc)); + background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%); + background-image: linear-gradient(#3875d7 20%, #2a62bc 90%); + color: #fff; +} +.chosen-container .chosen-results li.no-results { + color: #777; + display: list-item; + background: #f4f4f4; +} +.chosen-container .chosen-results li.group-result { + display: list-item; + font-weight: bold; + cursor: default; +} +.chosen-container .chosen-results li.group-option { + padding-left: 15px; +} +.chosen-container .chosen-results li em { + font-style: normal; + text-decoration: underline; +} + +/* @end */ +/* @group Multi Chosen */ +.chosen-container-multi .chosen-choices { + position: relative; + overflow: hidden; + margin: 0; + padding: 0 5px; + width: 100%; + height: auto !important; + height: 1%; + border: 1px solid #aaa; + background-color: #fff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%); + background-image: linear-gradient(#eeeeee 1%, #ffffff 15%); + cursor: text; +} +.chosen-container-multi .chosen-choices li { + float: left; + list-style: none; +} +.chosen-container-multi .chosen-choices li.search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + margin: 1px 0; + padding: 0; + height: 25px; + outline: 0; + border: 0 !important; + background: transparent !important; + box-shadow: none; + color: #999; + font-size: 100%; + font-family: sans-serif; + line-height: normal; + border-radius: 0; +} +.chosen-container-multi .chosen-choices li.search-choice { + position: relative; + margin: 3px 5px 3px 0; + padding: 3px 20px 3px 5px; + border: 1px solid #aaa; + max-width: 100%; + border-radius: 3px; + background-color: #eeeeee; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-size: 100% 19px; + background-repeat: repeat-x; + background-clip: padding-box; + box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); + color: #333; + line-height: 13px; + cursor: default; +} +.chosen-container-multi .chosen-choices li.search-choice span { + word-wrap: break-word; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 4px; + right: 3px; + display: block; + width: 12px; + height: 12px; + background: url('../images/chosen-sprite.png') -42px 1px no-repeat; + font-size: 1px; +} +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover { + background-position: -42px -10px; +} +.chosen-container-multi .chosen-choices li.search-choice-disabled { + padding-right: 5px; + border: 1px solid #ccc; + background-color: #e4e4e4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + color: #666; +} +.chosen-container-multi .chosen-choices li.search-choice-focus { + background: #d4d4d4; +} +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { + background-position: -42px -10px; +} +.chosen-container-multi .chosen-results { + margin: 0; + padding: 0; +} +.chosen-container-multi .chosen-drop .result-selected { + display: list-item; + color: #ccc; + cursor: default; +} + +/* @end */ +/* @group Active */ +.chosen-container-active .chosen-single { + border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} +.chosen-container-active.chosen-with-drop .chosen-single { + border: 1px solid #aaa; + -moz-border-radius-bottomright: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + border-bottom-left-radius: 0; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff)); + background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%); + background-image: linear-gradient(#eeeeee 20%, #ffffff 80%); + box-shadow: 0 1px 0 #fff inset; +} +.chosen-container-active.chosen-with-drop .chosen-single div { + border-left: none; + background: transparent; +} +.chosen-container-active.chosen-with-drop .chosen-single div b { + background-position: -18px 2px; +} +.chosen-container-active .chosen-choices { + border: 1px solid #5897fb; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} +.chosen-container-active .chosen-choices li.search-field input[type="text"] { + color: #222 !important; +} + +/* @end */ +/* @group Disabled Support */ +.chosen-disabled { + opacity: 0.5 !important; + cursor: default; +} +.chosen-disabled .chosen-single { + cursor: default; +} +.chosen-disabled .chosen-choices .search-choice .search-choice-close { + cursor: default; +} + +/* @end */ +/* @group Right to Left */ +.chosen-rtl { + text-align: right; +} +.chosen-rtl .chosen-single { + overflow: visible; + padding: 0 8px 0 0; +} +.chosen-rtl .chosen-single span { + margin-right: 0; + margin-left: 26px; + direction: rtl; +} +.chosen-rtl .chosen-single-with-deselect span { + margin-left: 38px; +} +.chosen-rtl .chosen-single div { + right: auto; + left: 3px; +} +.chosen-rtl .chosen-single abbr { + right: auto; + left: 26px; +} +.chosen-rtl .chosen-choices li { + float: right; +} +.chosen-rtl .chosen-choices li.search-field input[type="text"] { + direction: rtl; +} +.chosen-rtl .chosen-choices li.search-choice { + margin: 3px 5px 3px 0; + padding: 3px 5px 3px 19px; +} +.chosen-rtl .chosen-choices li.search-choice .search-choice-close { + right: auto; + left: 4px; +} +.chosen-rtl.chosen-container-single-nosearch .chosen-search, +.chosen-rtl .chosen-drop { + left: 9999px; +} +.chosen-rtl.chosen-container-single .chosen-results { + margin: 0 0 4px 4px; + padding: 0 4px 0 0; +} +.chosen-rtl .chosen-results li.group-option { + padding-right: 15px; + padding-left: 0; +} +.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div { + border-right: none; +} +.chosen-rtl .chosen-search input[type="text"] { + padding: 4px 5px 4px 20px; + background: white url('../images/chosen-sprite.png') no-repeat -30px -20px; + background: url('../images/chosen-sprite.png') no-repeat -30px -20px; + direction: rtl; +} +.chosen-rtl.chosen-container-single .chosen-single div b { + background-position: 6px 2px; +} +.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b { + background-position: -12px 2px; +} + +/* @end */ +/* @group Retina compatibility */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) { + .chosen-rtl .chosen-search input[type="text"], + .chosen-container-single .chosen-single abbr, + .chosen-container-single .chosen-single div b, + .chosen-container-single .chosen-search input[type="text"], + .chosen-container-multi .chosen-choices .search-choice .search-choice-close, + .chosen-container .chosen-results-scroll-down span, + .chosen-container .chosen-results-scroll-up span { + background-image: url('../images/chosen-sprite@2x.png') !important; + background-size: 52px 37px !important; + background-repeat: no-repeat !important; + } +} +/* @end */ diff --git a/assets/images/chosen-sprite.png b/assets/images/chosen-sprite.png new file mode 100644 index 0000000..c57da70 Binary files /dev/null and b/assets/images/chosen-sprite.png differ diff --git a/assets/images/chosen-sprite@2x.png b/assets/images/chosen-sprite@2x.png new file mode 100644 index 0000000..6b50545 Binary files /dev/null and b/assets/images/chosen-sprite@2x.png differ diff --git a/assets/js/admin/settings.js b/assets/js/admin/settings.js index bf0745a..91b8cff 100644 --- a/assets/js/admin/settings.js +++ b/assets/js/admin/settings.js @@ -21,4 +21,10 @@ jQuery(window).load(function(){ }); }); + // Chosen selects + jQuery("select.chosen-select").chosen({ + width: '300px', + disable_search_threshold: 5 + }); + }); \ No newline at end of file diff --git a/assets/js/admin/settings.min.js b/assets/js/admin/settings.min.js index d316257..ac1f042 100644 --- a/assets/js/admin/settings.min.js +++ b/assets/js/admin/settings.min.js @@ -1 +1 @@ -jQuery(window).load(function(){jQuery(function(){var a=!1;jQuery("input, checkbox").change(function(){a=!0}),jQuery(".nav-tab-wrapper a").click(function(){window.onbeforeunload=a?function(){return auto_load_next_post_settings_params.i18n_nav_warning}:""}),jQuery(".submit input").click(function(){window.onbeforeunload=""})})}); \ No newline at end of file +jQuery(window).load(function(){jQuery(function(){var a=!1;jQuery("input, checkbox").change(function(){a=!0}),jQuery(".nav-tab-wrapper a").click(function(){window.onbeforeunload=a?function(){return auto_load_next_post_settings_params.i18n_nav_warning}:""}),jQuery(".submit input").click(function(){window.onbeforeunload=""})}),jQuery("select.chosen-select").chosen({width:"300px",disable_search_threshold:5})}); \ No newline at end of file diff --git a/assets/js/chosen/chosen.jquery.js b/assets/js/chosen/chosen.jquery.js new file mode 100644 index 0000000..929a9ca --- /dev/null +++ b/assets/js/chosen/chosen.jquery.js @@ -0,0 +1,1257 @@ +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.4.2 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011-2015 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +This file is generated by `grunt build`, do not edit it by hand. +*/ + +(function() { + var $, AbstractChosen, Chosen, SelectParser, _ref, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + SelectParser = (function() { + function SelectParser() { + this.options_index = 0; + this.parsed = []; + } + + SelectParser.prototype.add_node = function(child) { + if (child.nodeName.toUpperCase() === "OPTGROUP") { + return this.add_group(child); + } else { + return this.add_option(child); + } + }; + + SelectParser.prototype.add_group = function(group) { + var group_position, option, _i, _len, _ref, _results; + group_position = this.parsed.length; + this.parsed.push({ + array_index: group_position, + group: true, + label: this.escapeExpression(group.label), + title: group.title ? group.title : void 0, + children: 0, + disabled: group.disabled, + classes: group.className + }); + _ref = group.childNodes; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + _results.push(this.add_option(option, group_position, group.disabled)); + } + return _results; + }; + + SelectParser.prototype.add_option = function(option, group_position, group_disabled) { + if (option.nodeName.toUpperCase() === "OPTION") { + if (option.text !== "") { + if (group_position != null) { + this.parsed[group_position].children += 1; + } + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + value: option.value, + text: option.text, + html: option.innerHTML, + title: option.title ? option.title : void 0, + selected: option.selected, + disabled: group_disabled === true ? group_disabled : option.disabled, + group_array_index: group_position, + group_label: group_position != null ? this.parsed[group_position].label : null, + classes: option.className, + style: option.style.cssText + }); + } else { + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + empty: true + }); + } + return this.options_index += 1; + } + }; + + SelectParser.prototype.escapeExpression = function(text) { + var map, unsafe_chars; + if ((text == null) || text === false) { + return ""; + } + if (!/[\&\<\>\"\'\`]/.test(text)) { + return text; + } + map = { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }; + unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; + return text.replace(unsafe_chars, function(chr) { + return map[chr] || "&"; + }); + }; + + return SelectParser; + + })(); + + SelectParser.select_to_array = function(select) { + var child, parser, _i, _len, _ref; + parser = new SelectParser(); + _ref = select.childNodes; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + child = _ref[_i]; + parser.add_node(child); + } + return parser.parsed; + }; + + AbstractChosen = (function() { + function AbstractChosen(form_field, options) { + this.form_field = form_field; + this.options = options != null ? options : {}; + if (!AbstractChosen.browser_is_supported()) { + return; + } + this.is_multiple = this.form_field.multiple; + this.set_default_text(); + this.set_default_values(); + this.setup(); + this.set_up_html(); + this.register_observers(); + this.on_ready(); + } + + AbstractChosen.prototype.set_default_values = function() { + var _this = this; + this.click_test_action = function(evt) { + return _this.test_active_click(evt); + }; + this.activate_action = function(evt) { + return _this.activate_field(evt); + }; + this.active_field = false; + this.mouse_on_container = false; + this.results_showing = false; + this.result_highlighted = null; + this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; + this.disable_search_threshold = this.options.disable_search_threshold || 0; + this.disable_search = this.options.disable_search || false; + this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; + this.group_search = this.options.group_search != null ? this.options.group_search : true; + this.search_contains = this.options.search_contains || false; + this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; + this.max_selected_options = this.options.max_selected_options || Infinity; + this.inherit_select_classes = this.options.inherit_select_classes || false; + this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; + this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; + return this.include_group_label_in_selected = this.options.include_group_label_in_selected || false; + }; + + AbstractChosen.prototype.set_default_text = function() { + if (this.form_field.getAttribute("data-placeholder")) { + this.default_text = this.form_field.getAttribute("data-placeholder"); + } else if (this.is_multiple) { + this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; + } else { + this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; + } + return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text; + }; + + AbstractChosen.prototype.choice_label = function(item) { + if (this.include_group_label_in_selected && (item.group_label != null)) { + return "" + item.group_label + "" + item.html; + } else { + return item.html; + } + }; + + AbstractChosen.prototype.mouse_enter = function() { + return this.mouse_on_container = true; + }; + + AbstractChosen.prototype.mouse_leave = function() { + return this.mouse_on_container = false; + }; + + AbstractChosen.prototype.input_focus = function(evt) { + var _this = this; + if (this.is_multiple) { + if (!this.active_field) { + return setTimeout((function() { + return _this.container_mousedown(); + }), 50); + } + } else { + if (!this.active_field) { + return this.activate_field(); + } + } + }; + + AbstractChosen.prototype.input_blur = function(evt) { + var _this = this; + if (!this.mouse_on_container) { + this.active_field = false; + return setTimeout((function() { + return _this.blur_test(); + }), 100); + } + }; + + AbstractChosen.prototype.results_option_build = function(options) { + var content, data, _i, _len, _ref; + content = ''; + _ref = this.results_data; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + data = _ref[_i]; + if (data.group) { + content += this.result_add_group(data); + } else { + content += this.result_add_option(data); + } + if (options != null ? options.first : void 0) { + if (data.selected && this.is_multiple) { + this.choice_build(data); + } else if (data.selected && !this.is_multiple) { + this.single_set_selected_text(this.choice_label(data)); + } + } + } + return content; + }; + + AbstractChosen.prototype.result_add_option = function(option) { + var classes, option_el; + if (!option.search_match) { + return ''; + } + if (!this.include_option_in_results(option)) { + return ''; + } + classes = []; + if (!option.disabled && !(option.selected && this.is_multiple)) { + classes.push("active-result"); + } + if (option.disabled && !(option.selected && this.is_multiple)) { + classes.push("disabled-result"); + } + if (option.selected) { + classes.push("result-selected"); + } + if (option.group_array_index != null) { + classes.push("group-option"); + } + if (option.classes !== "") { + classes.push(option.classes); + } + option_el = document.createElement("li"); + option_el.className = classes.join(" "); + option_el.style.cssText = option.style; + option_el.setAttribute("data-option-array-index", option.array_index); + option_el.innerHTML = option.search_text; + if (option.title) { + option_el.title = option.title; + } + return this.outerHTML(option_el); + }; + + AbstractChosen.prototype.result_add_group = function(group) { + var classes, group_el; + if (!(group.search_match || group.group_match)) { + return ''; + } + if (!(group.active_options > 0)) { + return ''; + } + classes = []; + classes.push("group-result"); + if (group.classes) { + classes.push(group.classes); + } + group_el = document.createElement("li"); + group_el.className = classes.join(" "); + group_el.innerHTML = group.search_text; + if (group.title) { + group_el.title = group.title; + } + return this.outerHTML(group_el); + }; + + AbstractChosen.prototype.results_update_field = function() { + this.set_default_text(); + if (!this.is_multiple) { + this.results_reset_cleanup(); + } + this.result_clear_highlight(); + this.results_build(); + if (this.results_showing) { + return this.winnow_results(); + } + }; + + AbstractChosen.prototype.reset_single_select_options = function() { + var result, _i, _len, _ref, _results; + _ref = this.results_data; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + result = _ref[_i]; + if (result.selected) { + _results.push(result.selected = false); + } else { + _results.push(void 0); + } + } + return _results; + }; + + AbstractChosen.prototype.results_toggle = function() { + if (this.results_showing) { + return this.results_hide(); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.results_search = function(evt) { + if (this.results_showing) { + return this.winnow_results(); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.winnow_results = function() { + var escapedSearchText, option, regex, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref; + this.no_results_clear(); + results = 0; + searchText = this.get_search_text(); + escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + zregex = new RegExp(escapedSearchText, 'i'); + regex = this.get_search_regex(escapedSearchText); + _ref = this.results_data; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + option.search_match = false; + results_group = null; + if (this.include_option_in_results(option)) { + if (option.group) { + option.group_match = false; + option.active_options = 0; + } + if ((option.group_array_index != null) && this.results_data[option.group_array_index]) { + results_group = this.results_data[option.group_array_index]; + if (results_group.active_options === 0 && results_group.search_match) { + results += 1; + } + results_group.active_options += 1; + } + option.search_text = option.group ? option.label : option.html; + if (!(option.group && !this.group_search)) { + option.search_match = this.search_string_match(option.search_text, regex); + if (option.search_match && !option.group) { + results += 1; + } + if (option.search_match) { + if (searchText.length) { + startpos = option.search_text.search(zregex); + text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length); + option.search_text = text.substr(0, startpos) + '' + text.substr(startpos); + } + if (results_group != null) { + results_group.group_match = true; + } + } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { + option.search_match = true; + } + } + } + } + this.result_clear_highlight(); + if (results < 1 && searchText.length) { + this.update_results_content(""); + return this.no_results(searchText); + } else { + this.update_results_content(this.results_option_build()); + return this.winnow_results_set_highlight(); + } + }; + + AbstractChosen.prototype.get_search_regex = function(escaped_search_string) { + var regex_anchor; + regex_anchor = this.search_contains ? "" : "^"; + return new RegExp(regex_anchor + escaped_search_string, 'i'); + }; + + AbstractChosen.prototype.search_string_match = function(search_string, regex) { + var part, parts, _i, _len; + if (regex.test(search_string)) { + return true; + } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { + parts = search_string.replace(/\[|\]/g, "").split(" "); + if (parts.length) { + for (_i = 0, _len = parts.length; _i < _len; _i++) { + part = parts[_i]; + if (regex.test(part)) { + return true; + } + } + } + } + }; + + AbstractChosen.prototype.choices_count = function() { + var option, _i, _len, _ref; + if (this.selected_option_count != null) { + return this.selected_option_count; + } + this.selected_option_count = 0; + _ref = this.form_field.options; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + if (option.selected) { + this.selected_option_count += 1; + } + } + return this.selected_option_count; + }; + + AbstractChosen.prototype.choices_click = function(evt) { + evt.preventDefault(); + if (!(this.results_showing || this.is_disabled)) { + return this.results_show(); + } + }; + + AbstractChosen.prototype.keyup_checker = function(evt) { + var stroke, _ref; + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; + this.search_field_scale(); + switch (stroke) { + case 8: + if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { + return this.keydown_backstroke(); + } else if (!this.pending_backstroke) { + this.result_clear_highlight(); + return this.results_search(); + } + break; + case 13: + evt.preventDefault(); + if (this.results_showing) { + return this.result_select(evt); + } + break; + case 27: + if (this.results_showing) { + this.results_hide(); + } + return true; + case 9: + case 38: + case 40: + case 16: + case 91: + case 17: + break; + default: + return this.results_search(); + } + }; + + AbstractChosen.prototype.clipboard_event_checker = function(evt) { + var _this = this; + return setTimeout((function() { + return _this.results_search(); + }), 50); + }; + + AbstractChosen.prototype.container_width = function() { + if (this.options.width != null) { + return this.options.width; + } else { + return "" + this.form_field.offsetWidth + "px"; + } + }; + + AbstractChosen.prototype.include_option_in_results = function(option) { + if (this.is_multiple && (!this.display_selected_options && option.selected)) { + return false; + } + if (!this.display_disabled_options && option.disabled) { + return false; + } + if (option.empty) { + return false; + } + return true; + }; + + AbstractChosen.prototype.search_results_touchstart = function(evt) { + this.touch_started = true; + return this.search_results_mouseover(evt); + }; + + AbstractChosen.prototype.search_results_touchmove = function(evt) { + this.touch_started = false; + return this.search_results_mouseout(evt); + }; + + AbstractChosen.prototype.search_results_touchend = function(evt) { + if (this.touch_started) { + return this.search_results_mouseup(evt); + } + }; + + AbstractChosen.prototype.outerHTML = function(element) { + var tmp; + if (element.outerHTML) { + return element.outerHTML; + } + tmp = document.createElement("div"); + tmp.appendChild(element); + return tmp.innerHTML; + }; + + AbstractChosen.browser_is_supported = function() { + if (window.navigator.appName === "Microsoft Internet Explorer") { + return document.documentMode >= 8; + } + if (/iP(od|hone)/i.test(window.navigator.userAgent)) { + return false; + } + if (/Android/i.test(window.navigator.userAgent)) { + if (/Mobile/i.test(window.navigator.userAgent)) { + return false; + } + } + return true; + }; + + AbstractChosen.default_multiple_text = "Select Some Options"; + + AbstractChosen.default_single_text = "Select an Option"; + + AbstractChosen.default_no_result_text = "No results match"; + + return AbstractChosen; + + })(); + + $ = jQuery; + + $.fn.extend({ + chosen: function(options) { + if (!AbstractChosen.browser_is_supported()) { + return this; + } + return this.each(function(input_field) { + var $this, chosen; + $this = $(this); + chosen = $this.data('chosen'); + if (options === 'destroy' && chosen instanceof Chosen) { + chosen.destroy(); + } else if (!(chosen instanceof Chosen)) { + $this.data('chosen', new Chosen(this, options)); + } + }); + } + }); + + Chosen = (function(_super) { + __extends(Chosen, _super); + + function Chosen() { + _ref = Chosen.__super__.constructor.apply(this, arguments); + return _ref; + } + + Chosen.prototype.setup = function() { + this.form_field_jq = $(this.form_field); + this.current_selectedIndex = this.form_field.selectedIndex; + return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl"); + }; + + Chosen.prototype.set_up_html = function() { + var container_classes, container_props; + container_classes = ["chosen-container"]; + container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); + if (this.inherit_select_classes && this.form_field.className) { + container_classes.push(this.form_field.className); + } + if (this.is_rtl) { + container_classes.push("chosen-rtl"); + } + container_props = { + 'class': container_classes.join(' '), + 'style': "width: " + (this.container_width()) + ";", + 'title': this.form_field.title + }; + if (this.form_field.id.length) { + container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; + } + this.container = $("
", container_props); + if (this.is_multiple) { + this.container.html('
    '); + } else { + this.container.html('' + this.default_text + '
      '); + } + this.form_field_jq.hide().after(this.container); + this.dropdown = this.container.find('div.chosen-drop').first(); + this.search_field = this.container.find('input').first(); + this.search_results = this.container.find('ul.chosen-results').first(); + this.search_field_scale(); + this.search_no_results = this.container.find('li.no-results').first(); + if (this.is_multiple) { + this.search_choices = this.container.find('ul.chosen-choices').first(); + this.search_container = this.container.find('li.search-field').first(); + } else { + this.search_container = this.container.find('div.chosen-search').first(); + this.selected_item = this.container.find('.chosen-single').first(); + } + this.results_build(); + this.set_tab_index(); + return this.set_label_behavior(); + }; + + Chosen.prototype.on_ready = function() { + return this.form_field_jq.trigger("chosen:ready", { + chosen: this + }); + }; + + Chosen.prototype.register_observers = function() { + var _this = this; + this.container.bind('touchstart.chosen', function(evt) { + _this.container_mousedown(evt); + return evt.preventDefault(); + }); + this.container.bind('touchend.chosen', function(evt) { + _this.container_mouseup(evt); + return evt.preventDefault(); + }); + this.container.bind('mousedown.chosen', function(evt) { + _this.container_mousedown(evt); + }); + this.container.bind('mouseup.chosen', function(evt) { + _this.container_mouseup(evt); + }); + this.container.bind('mouseenter.chosen', function(evt) { + _this.mouse_enter(evt); + }); + this.container.bind('mouseleave.chosen', function(evt) { + _this.mouse_leave(evt); + }); + this.search_results.bind('mouseup.chosen', function(evt) { + _this.search_results_mouseup(evt); + }); + this.search_results.bind('mouseover.chosen', function(evt) { + _this.search_results_mouseover(evt); + }); + this.search_results.bind('mouseout.chosen', function(evt) { + _this.search_results_mouseout(evt); + }); + this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) { + _this.search_results_mousewheel(evt); + }); + this.search_results.bind('touchstart.chosen', function(evt) { + _this.search_results_touchstart(evt); + }); + this.search_results.bind('touchmove.chosen', function(evt) { + _this.search_results_touchmove(evt); + }); + this.search_results.bind('touchend.chosen', function(evt) { + _this.search_results_touchend(evt); + }); + this.form_field_jq.bind("chosen:updated.chosen", function(evt) { + _this.results_update_field(evt); + }); + this.form_field_jq.bind("chosen:activate.chosen", function(evt) { + _this.activate_field(evt); + }); + this.form_field_jq.bind("chosen:open.chosen", function(evt) { + _this.container_mousedown(evt); + }); + this.form_field_jq.bind("chosen:close.chosen", function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('blur.chosen', function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('keyup.chosen', function(evt) { + _this.keyup_checker(evt); + }); + this.search_field.bind('keydown.chosen', function(evt) { + _this.keydown_checker(evt); + }); + this.search_field.bind('focus.chosen', function(evt) { + _this.input_focus(evt); + }); + this.search_field.bind('cut.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + this.search_field.bind('paste.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + if (this.is_multiple) { + return this.search_choices.bind('click.chosen', function(evt) { + _this.choices_click(evt); + }); + } else { + return this.container.bind('click.chosen', function(evt) { + evt.preventDefault(); + }); + } + }; + + Chosen.prototype.destroy = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + if (this.search_field[0].tabIndex) { + this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; + } + this.container.remove(); + this.form_field_jq.removeData('chosen'); + return this.form_field_jq.show(); + }; + + Chosen.prototype.search_field_disabled = function() { + this.is_disabled = this.form_field_jq[0].disabled; + if (this.is_disabled) { + this.container.addClass('chosen-disabled'); + this.search_field[0].disabled = true; + if (!this.is_multiple) { + this.selected_item.unbind("focus.chosen", this.activate_action); + } + return this.close_field(); + } else { + this.container.removeClass('chosen-disabled'); + this.search_field[0].disabled = false; + if (!this.is_multiple) { + return this.selected_item.bind("focus.chosen", this.activate_action); + } + } + }; + + Chosen.prototype.container_mousedown = function(evt) { + if (!this.is_disabled) { + if (evt && evt.type === "mousedown" && !this.results_showing) { + evt.preventDefault(); + } + if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { + if (!this.active_field) { + if (this.is_multiple) { + this.search_field.val(""); + } + $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action); + this.results_show(); + } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { + evt.preventDefault(); + this.results_toggle(); + } + return this.activate_field(); + } + } + }; + + Chosen.prototype.container_mouseup = function(evt) { + if (evt.target.nodeName === "ABBR" && !this.is_disabled) { + return this.results_reset(evt); + } + }; + + Chosen.prototype.search_results_mousewheel = function(evt) { + var delta; + if (evt.originalEvent) { + delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail; + } + if (delta != null) { + evt.preventDefault(); + if (evt.type === 'DOMMouseScroll') { + delta = delta * 40; + } + return this.search_results.scrollTop(delta + this.search_results.scrollTop()); + } + }; + + Chosen.prototype.blur_test = function(evt) { + if (!this.active_field && this.container.hasClass("chosen-container-active")) { + return this.close_field(); + } + }; + + Chosen.prototype.close_field = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + this.active_field = false; + this.results_hide(); + this.container.removeClass("chosen-container-active"); + this.clear_backstroke(); + this.show_search_field_default(); + return this.search_field_scale(); + }; + + Chosen.prototype.activate_field = function() { + this.container.addClass("chosen-container-active"); + this.active_field = true; + this.search_field.val(this.search_field.val()); + return this.search_field.focus(); + }; + + Chosen.prototype.test_active_click = function(evt) { + var active_container; + active_container = $(evt.target).closest('.chosen-container'); + if (active_container.length && this.container[0] === active_container[0]) { + return this.active_field = true; + } else { + return this.close_field(); + } + }; + + Chosen.prototype.results_build = function() { + this.parsing = true; + this.selected_option_count = null; + this.results_data = SelectParser.select_to_array(this.form_field); + if (this.is_multiple) { + this.search_choices.find("li.search-choice").remove(); + } else if (!this.is_multiple) { + this.single_set_selected_text(); + if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { + this.search_field[0].readOnly = true; + this.container.addClass("chosen-container-single-nosearch"); + } else { + this.search_field[0].readOnly = false; + this.container.removeClass("chosen-container-single-nosearch"); + } + } + this.update_results_content(this.results_option_build({ + first: true + })); + this.search_field_disabled(); + this.show_search_field_default(); + this.search_field_scale(); + return this.parsing = false; + }; + + Chosen.prototype.result_do_highlight = function(el) { + var high_bottom, high_top, maxHeight, visible_bottom, visible_top; + if (el.length) { + this.result_clear_highlight(); + this.result_highlight = el; + this.result_highlight.addClass("highlighted"); + maxHeight = parseInt(this.search_results.css("maxHeight"), 10); + visible_top = this.search_results.scrollTop(); + visible_bottom = maxHeight + visible_top; + high_top = this.result_highlight.position().top + this.search_results.scrollTop(); + high_bottom = high_top + this.result_highlight.outerHeight(); + if (high_bottom >= visible_bottom) { + return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); + } else if (high_top < visible_top) { + return this.search_results.scrollTop(high_top); + } + } + }; + + Chosen.prototype.result_clear_highlight = function() { + if (this.result_highlight) { + this.result_highlight.removeClass("highlighted"); + } + return this.result_highlight = null; + }; + + Chosen.prototype.results_show = function() { + if (this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + this.container.addClass("chosen-with-drop"); + this.results_showing = true; + this.search_field.focus(); + this.search_field.val(this.search_field.val()); + this.winnow_results(); + return this.form_field_jq.trigger("chosen:showing_dropdown", { + chosen: this + }); + }; + + Chosen.prototype.update_results_content = function(content) { + return this.search_results.html(content); + }; + + Chosen.prototype.results_hide = function() { + if (this.results_showing) { + this.result_clear_highlight(); + this.container.removeClass("chosen-with-drop"); + this.form_field_jq.trigger("chosen:hiding_dropdown", { + chosen: this + }); + } + return this.results_showing = false; + }; + + Chosen.prototype.set_tab_index = function(el) { + var ti; + if (this.form_field.tabIndex) { + ti = this.form_field.tabIndex; + this.form_field.tabIndex = -1; + return this.search_field[0].tabIndex = ti; + } + }; + + Chosen.prototype.set_label_behavior = function() { + var _this = this; + this.form_field_label = this.form_field_jq.parents("label"); + if (!this.form_field_label.length && this.form_field.id.length) { + this.form_field_label = $("label[for='" + this.form_field.id + "']"); + } + if (this.form_field_label.length > 0) { + return this.form_field_label.bind('click.chosen', function(evt) { + if (_this.is_multiple) { + return _this.container_mousedown(evt); + } else { + return _this.activate_field(); + } + }); + } + }; + + Chosen.prototype.show_search_field_default = function() { + if (this.is_multiple && this.choices_count() < 1 && !this.active_field) { + this.search_field.val(this.default_text); + return this.search_field.addClass("default"); + } else { + this.search_field.val(""); + return this.search_field.removeClass("default"); + } + }; + + Chosen.prototype.search_results_mouseup = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if (target.length) { + this.result_highlight = target; + this.result_select(evt); + return this.search_field.focus(); + } + }; + + Chosen.prototype.search_results_mouseover = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if (target) { + return this.result_do_highlight(target); + } + }; + + Chosen.prototype.search_results_mouseout = function(evt) { + if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { + return this.result_clear_highlight(); + } + }; + + Chosen.prototype.choice_build = function(item) { + var choice, close_link, + _this = this; + choice = $('
    • ', { + "class": "search-choice" + }).html("" + (this.choice_label(item)) + ""); + if (item.disabled) { + choice.addClass('search-choice-disabled'); + } else { + close_link = $('', { + "class": 'search-choice-close', + 'data-option-array-index': item.array_index + }); + close_link.bind('click.chosen', function(evt) { + return _this.choice_destroy_link_click(evt); + }); + choice.append(close_link); + } + return this.search_container.before(choice); + }; + + Chosen.prototype.choice_destroy_link_click = function(evt) { + evt.preventDefault(); + evt.stopPropagation(); + if (!this.is_disabled) { + return this.choice_destroy($(evt.target)); + } + }; + + Chosen.prototype.choice_destroy = function(link) { + if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) { + this.show_search_field_default(); + if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { + this.results_hide(); + } + link.parents('li').first().remove(); + return this.search_field_scale(); + } + }; + + Chosen.prototype.results_reset = function() { + this.reset_single_select_options(); + this.form_field.options[0].selected = true; + this.single_set_selected_text(); + this.show_search_field_default(); + this.results_reset_cleanup(); + this.form_field_jq.trigger("change"); + if (this.active_field) { + return this.results_hide(); + } + }; + + Chosen.prototype.results_reset_cleanup = function() { + this.current_selectedIndex = this.form_field.selectedIndex; + return this.selected_item.find("abbr").remove(); + }; + + Chosen.prototype.result_select = function(evt) { + var high, item; + if (this.result_highlight) { + high = this.result_highlight; + this.result_clear_highlight(); + if (this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + if (this.is_multiple) { + high.removeClass("active-result"); + } else { + this.reset_single_select_options(); + } + high.addClass("result-selected"); + item = this.results_data[high[0].getAttribute("data-option-array-index")]; + item.selected = true; + this.form_field.options[item.options_index].selected = true; + this.selected_option_count = null; + if (this.is_multiple) { + this.choice_build(item); + } else { + this.single_set_selected_text(this.choice_label(item)); + } + if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { + this.results_hide(); + } + this.search_field.val(""); + if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { + this.form_field_jq.trigger("change", { + 'selected': this.form_field.options[item.options_index].value + }); + } + this.current_selectedIndex = this.form_field.selectedIndex; + evt.preventDefault(); + return this.search_field_scale(); + } + }; + + Chosen.prototype.single_set_selected_text = function(text) { + if (text == null) { + text = this.default_text; + } + if (text === this.default_text) { + this.selected_item.addClass("chosen-default"); + } else { + this.single_deselect_control_build(); + this.selected_item.removeClass("chosen-default"); + } + return this.selected_item.find("span").html(text); + }; + + Chosen.prototype.result_deselect = function(pos) { + var result_data; + result_data = this.results_data[pos]; + if (!this.form_field.options[result_data.options_index].disabled) { + result_data.selected = false; + this.form_field.options[result_data.options_index].selected = false; + this.selected_option_count = null; + this.result_clear_highlight(); + if (this.results_showing) { + this.winnow_results(); + } + this.form_field_jq.trigger("change", { + deselected: this.form_field.options[result_data.options_index].value + }); + this.search_field_scale(); + return true; + } else { + return false; + } + }; + + Chosen.prototype.single_deselect_control_build = function() { + if (!this.allow_single_deselect) { + return; + } + if (!this.selected_item.find("abbr").length) { + this.selected_item.find("span").first().after(""); + } + return this.selected_item.addClass("chosen-single-with-deselect"); + }; + + Chosen.prototype.get_search_text = function() { + return $('
      ').text($.trim(this.search_field.val())).html(); + }; + + Chosen.prototype.winnow_results_set_highlight = function() { + var do_high, selected_results; + selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; + do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); + if (do_high != null) { + return this.result_do_highlight(do_high); + } + }; + + Chosen.prototype.no_results = function(terms) { + var no_results_html; + no_results_html = $('
    • ' + this.results_none_found + ' ""
    • '); + no_results_html.find("span").first().html(terms); + this.search_results.append(no_results_html); + return this.form_field_jq.trigger("chosen:no_results", { + chosen: this + }); + }; + + Chosen.prototype.no_results_clear = function() { + return this.search_results.find(".no-results").remove(); + }; + + Chosen.prototype.keydown_arrow = function() { + var next_sib; + if (this.results_showing && this.result_highlight) { + next_sib = this.result_highlight.nextAll("li.active-result").first(); + if (next_sib) { + return this.result_do_highlight(next_sib); + } + } else { + return this.results_show(); + } + }; + + Chosen.prototype.keyup_arrow = function() { + var prev_sibs; + if (!this.results_showing && !this.is_multiple) { + return this.results_show(); + } else if (this.result_highlight) { + prev_sibs = this.result_highlight.prevAll("li.active-result"); + if (prev_sibs.length) { + return this.result_do_highlight(prev_sibs.first()); + } else { + if (this.choices_count() > 0) { + this.results_hide(); + } + return this.result_clear_highlight(); + } + } + }; + + Chosen.prototype.keydown_backstroke = function() { + var next_available_destroy; + if (this.pending_backstroke) { + this.choice_destroy(this.pending_backstroke.find("a").first()); + return this.clear_backstroke(); + } else { + next_available_destroy = this.search_container.siblings("li.search-choice").last(); + if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { + this.pending_backstroke = next_available_destroy; + if (this.single_backstroke_delete) { + return this.keydown_backstroke(); + } else { + return this.pending_backstroke.addClass("search-choice-focus"); + } + } + } + }; + + Chosen.prototype.clear_backstroke = function() { + if (this.pending_backstroke) { + this.pending_backstroke.removeClass("search-choice-focus"); + } + return this.pending_backstroke = null; + }; + + Chosen.prototype.keydown_checker = function(evt) { + var stroke, _ref1; + stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; + this.search_field_scale(); + if (stroke !== 8 && this.pending_backstroke) { + this.clear_backstroke(); + } + switch (stroke) { + case 8: + this.backstroke_length = this.search_field.val().length; + break; + case 9: + if (this.results_showing && !this.is_multiple) { + this.result_select(evt); + } + this.mouse_on_container = false; + break; + case 13: + if (this.results_showing) { + evt.preventDefault(); + } + break; + case 32: + if (this.disable_search) { + evt.preventDefault(); + } + break; + case 38: + evt.preventDefault(); + this.keyup_arrow(); + break; + case 40: + evt.preventDefault(); + this.keydown_arrow(); + break; + } + }; + + Chosen.prototype.search_field_scale = function() { + var div, f_width, h, style, style_block, styles, w, _i, _len; + if (this.is_multiple) { + h = 0; + w = 0; + style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; + styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; + for (_i = 0, _len = styles.length; _i < _len; _i++) { + style = styles[_i]; + style_block += style + ":" + this.search_field.css(style) + ";"; + } + div = $('
      ', { + 'style': style_block + }); + div.text(this.search_field.val()); + $('body').append(div); + w = div.width() + 25; + div.remove(); + f_width = this.container.outerWidth(); + if (w > f_width - 10) { + w = f_width - 10; + } + return this.search_field.css({ + 'width': w + 'px' + }); + } + }; + + return Chosen; + + })(AbstractChosen); + +}).call(this); diff --git a/assets/js/chosen/chosen.jquery.min.js b/assets/js/chosen/chosen.jquery.min.js new file mode 100644 index 0000000..22e3865 --- /dev/null +++ b/assets/js/chosen/chosen.jquery.min.js @@ -0,0 +1,2 @@ +/* Chosen v1.4.2 | (c) 2011-2015 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ +(function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),title:a.title?a.title:void 0,children:0,disabled:a.disabled,classes:a.className}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,title:a.title?a.title:void 0,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,group_label:null!=b?this.parsed[b].label:null,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.choice_label=function(a){return this.include_group_label_in_selected&&null!=a.group_label?""+a.group_label+""+a.html:a.html},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(c)));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b,c;return a.search_match||a.group_match?a.active_options>0?(b=[],b.push("group-result"),a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l;for(this.no_results_clear(),d=0,f=this.get_search_text(),a=f.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),i=new RegExp(a,"i"),c=this.get_search_regex(a),l=this.results_data,j=0,k=l.length;k>j;j++)b=l[j],b.search_match=!1,e=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(e=this.results_data[b.group_array_index],0===e.active_options&&e.search_match&&(d+=1),e.active_options+=1),b.search_text=b.group?b.label:b.html,(!b.group||this.group_search)&&(b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(d+=1),b.search_match?(f.length&&(g=b.search_text.search(i),h=b.search_text.substr(0,g+f.length)+""+b.search_text.substr(g+f.length),b.search_text=h.substr(0,g)+""+h.substr(g)),null!=e&&(e.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>d&&f.length?(this.update_results_content(""),this.no_results(f)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.get_search_regex=function(a){var b;return b=this.search_contains?"":"^",new RegExp(b+a,"i")},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d instanceof Chosen?d.destroy():d instanceof Chosen||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("
      ",c),this.is_multiple?this.container.html('
        '):this.container.html('
        '+this.default_text+'
          '),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},Chosen.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("touchstart.chosen",function(b){return a.container_mousedown(b),b.preventDefault()}),this.container.bind("touchend.chosen",function(b){return a.container_mouseup(b),b.preventDefault()}),this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=a.originalEvent.deltaY||-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("
        • ",{"class":"search-choice"}).html(""+this.choice_label(b)+""),b.disabled?c.addClass("search-choice-disabled"):(d=a("",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),b.addClass("result-selected"),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(this.choice_label(c)),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,a.preventDefault(),this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return a("
          ").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('
        • '+this.results_none_found+' ""
        • '),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:this.results_showing&&a.preventDefault();break;case 32:this.disable_search&&a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("
          ",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}).call(this); \ No newline at end of file diff --git a/assets/js/chosen/index.php b/assets/js/chosen/index.php new file mode 100644 index 0000000..7e91415 --- /dev/null +++ b/assets/js/chosen/index.php @@ -0,0 +1,2 @@ +' ); @@ -54,7 +58,8 @@ function changeURL() { History.pushState(null, null, this_url); window.document.title = this_title; - if( auto_load_next_post_params.google_analytics == 'yes' ) { + if( auto_load_next_post_params.alnp_google_analytics == 'yes' ) { + console.log( 'Google Analytics Tracked' ); update_google_analytics(); } } @@ -74,6 +79,8 @@ function auto_load_next_post() { // Grab the url for the next post var post_url = jQuery('a[rel="prev"]').attr('href'); + console.log( 'Next Post URL: ' + post_url ); + if ( !post_url ) return; // Check to see if pretty permalinks, if not then add partial=1 @@ -90,6 +97,7 @@ function auto_load_next_post() { // Remove the post navigation HTML once the next post has loaded. jQuery( nav_container ).remove(); + console.log( 'Post Navigation Removed!' ); jQuery.get( np_url , function( data ) { var post = jQuery("
          " + data + "
          "); @@ -99,6 +107,8 @@ function auto_load_next_post() { var post_html = jQuery( '
          ' + data ); var post_title = post_html.find( post_title_selector ); + console.log( 'Post Title: ' + post_title.text() ); // Console Log Post Title + jQuery( content_container ).append( post_html ); // Add next post // get the HR element and add the data-title diff --git a/assets/js/frontend/auto-load-next-post.js.buggy b/assets/js/frontend/auto-load-next-post.js.buggy new file mode 100644 index 0000000..b010533 --- /dev/null +++ b/assets/js/frontend/auto-load-next-post.js.buggy @@ -0,0 +1,143 @@ +// Variables +var content_container = auto_load_next_post_params.alnp_content_container; +var nav_container = auto_load_next_post_params.alnp_navigation_container; +var comments_container = auto_load_next_post_params.alnp_comments_container; +var post_title_selector = auto_load_next_post_params.alnp_title_selector; +var post_id_selector = auto_load_next_post_params.alnp_post_id_selector; +var curr_url = window.location.href; + +jQuery.noConflict(); + +jQuery( document ).ready(function() { + "use strict"; + + // Don't run the script if wanting to read the comments. + if ( window.location.href.indexOf( '#comments' ) > -1 ) { + return; + } + + // It's up to you if you want to hide the comments. If the anwser is yes then the comments will be gone. + console.log( 'Comments Removed: ' + auto_load_next_post_params.alnp_remove_comments ); + if ( auto_load_next_post_params.alnp_remove_comments === 'yes' ) { + jQuery( comments_container ).remove(); // Remove Comments + } + + // Add divider + jQuery( content_container ).prepend( '
          ' ); + + initialise_Scrollspy(); + + initialise_History(); +}); + +function initialise_Scrollspy() { + "use strict"; + + // Spy on post-divider - changes the URL in browser location, loads new post + jQuery('.post-divider').on('scrollSpy:exit', changeURL ); + jQuery('.post-divider').on('scrollSpy:enter', changeURL ); + jQuery('.post-divider').scrollSpy(); +} + +function initialise_History() { + "use strict"; + + // Bind to StateChange Event + History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate + var State = History.getState(); // Note: We are using History.getState() instead of event.state + + if ( State.url != curr_url ) { + window.location.reload(State.url); + } + }); +} + +function changeURL() { + "use strict"; + + var el = jQuery(this); + var this_url = el.attr('data-url'); + var this_title = el.attr('data-title'); + var offset = el.offset(); + var scrollTop = jQuery(document).scrollTop(); + + // If exiting or entering from top, change URL + if ( ( offset.top - scrollTop ) < 150 && curr_url !== this_url) { + curr_url = this_url; + History.pushState(null, null, this_url); + console.log( 'History Updated' ); + + window.document.title = this_title; + console.log( 'Page Title Changed' ); + + if ( auto_load_next_post_params.alnp_google_analytics === 'yes' ) { + console.log( 'Google Analytics Tracked' ); + update_google_analytics(); + } + } + + auto_load_next_post(); // Load Next Post +} + +function updategoogle_analytics() { + "use strict"; + + if( typeof ga === 'undefined' ) { + return; + } + + ga('send', 'pageview', window.location.pathname); +} + +function auto_load_next_post() { + "use strict"; + + // Grab the url for the next post. Note: Next posts are older than the one at top. + var post_url = jQuery('a[rel="prev"]').attr('href'); + var np_url = ''; + + console.log( 'Next Post URL: ' + post_url ); + + if ( post_url == '' ) { return; } + + // Check to see if pretty permalinks, if not then add partial=1 + if ( post_url.indexOf( '?p=' ) > -1 ) { + np_url = post_url + '&partial=1'; + } else { + var partial_endpoint = 'partial/'; + + if ( post_url.charAt(post_url.length - 1) != '/') { + partial_endpoint = '/' + partial_endpoint; + } + + np_url = post_url + partial_endpoint; + } + + // Remove the post navigation HTML once the next post has loaded. + jQuery( nav_container ).remove(); + console.log( 'Post Navigation Removed!' ); + + jQuery.get( np_url , function( data ) { + var post = jQuery("
          " + data + "
          "); + + data = post.html(); // Return the HTML data of the next post that was loaded. + + var post_html = jQuery( '
          ' + data ); + var post_title = post_html.find( post_title_selector ); // Find the post title. + //var post_id = post_html.find( post_id_selector ).attr( "id" ); // Update the post id variable. + //post_id = post_id.replace('post-', ''); // Now clean it to return only the post ID number. + + console.log( 'Post Title: ' + post_title.text() ); // Console Log Post Title + //console.log( 'Post ID: ' + post_id ); // Console Log Post ID number + + jQuery( content_container ).append( post_html ); // Add the next post + + // Get the HR element and add the data-title and data-id + jQuery( 'hr[data-url="' + post_url + '"]').attr( 'data-title' , post_title.text() ).css( 'display', 'inline-block' ); + //jQuery( 'hr[data-url="' + post_url + '"]').attr({ 'data-title' : post_title.text(), 'data-id' : post_id }).css( 'display', 'inline-block' ); + + // Need to set up ScrollSpy on new content + initialise_Scrollspy(); + }); + +} \ No newline at end of file diff --git a/assets/js/frontend/auto-load-next-post.min.js b/assets/js/frontend/auto-load-next-post.min.js index fb503fd..743c6e4 100644 --- a/assets/js/frontend/auto-load-next-post.min.js +++ b/assets/js/frontend/auto-load-next-post.min.js @@ -1 +1 @@ -function initialise_Scrollspy(){jQuery(".post-divider").on("scrollSpy:exit",changeURL),jQuery(".post-divider").on("scrollSpy:enter",changeURL),jQuery(".post-divider").scrollSpy()}function initialise_History(){History.Adapter.bind(window,"statechange",function(){var a=History.getState();a.url!=curr_url&&window.location.reload(a.url)})}function changeURL(){var a=jQuery(this),b=a.attr("data-url"),c=a.attr("data-title"),d=a.offset(),e=jQuery(document).scrollTop();d.top-e<150&&curr_url!=b&&(curr_url=b,History.pushState(null,null,b),window.document.title=c,"yes"==auto_load_next_post_params.google_analytics&&update_google_analytics()),auto_load_next_post()}function updategoogle_analytics(){"undefined"!==typeof ga&&ga("send","pageview",window.location.pathname)}function auto_load_next_post(){var a=jQuery('a[rel="prev"]').attr("href");if(a){if(a.indexOf("?p=")>-1)np_url=a+"&partial=1";else{var b="partial/";"/"!=a.charAt(a.length-1)&&(b="/"+b),np_url=a+b}jQuery(nav_container).remove(),jQuery.get(np_url,function(b){var c=jQuery("
          "+b+"
          ");b=c.html();var d=jQuery('
          '+b),e=d.find(post_title_selector);jQuery(content_container).append(d),jQuery('hr[data-url="'+a+'"]').attr("data-title",e.text()).css("display","inline-block"),initialise_Scrollspy()})}}var content_container=auto_load_next_post_params.alnp_content_container,nav_container=auto_load_next_post_params.alnp_navigation_container,comments_container=auto_load_next_post_params.alnp_comments_container,post_title_selector=auto_load_next_post_params.alnp_title_selector,curr_url=window.location.href;jQuery.noConflict(),jQuery(document).ready(function(){window.location.href.indexOf("#comments")>-1||(jQuery(comments_container).remove(),jQuery(content_container).prepend('
          '),initialise_Scrollspy(),initialise_History())}); \ No newline at end of file +function initialise_Scrollspy(){jQuery(".post-divider").on("scrollSpy:exit",changeURL),jQuery(".post-divider").on("scrollSpy:enter",changeURL),jQuery(".post-divider").scrollSpy()}function initialise_History(){History.Adapter.bind(window,"statechange",function(){var a=History.getState();a.url!=curr_url&&window.location.reload(a.url)})}function changeURL(){var a=jQuery(this),b=a.attr("data-url"),c=a.attr("data-title"),d=a.offset(),e=jQuery(document).scrollTop();d.top-e<150&&curr_url!=b&&(curr_url=b,History.pushState(null,null,b),window.document.title=c,"yes"==auto_load_next_post_params.alnp_google_analytics&&(console.log("Google Analytics Tracked"),update_google_analytics())),auto_load_next_post()}function updategoogle_analytics(){"undefined"!==typeof ga&&ga("send","pageview",window.location.pathname)}function auto_load_next_post(){var a=jQuery('a[rel="prev"]').attr("href");if(console.log("Next Post URL: "+a),a){if(a.indexOf("?p=")>-1)np_url=a+"&partial=1";else{var b="partial/";"/"!=a.charAt(a.length-1)&&(b="/"+b),np_url=a+b}jQuery(nav_container).remove(),console.log("Post Navigation Removed!"),jQuery.get(np_url,function(b){var c=jQuery("
          "+b+"
          ");b=c.html();var d=jQuery('
          '+b),e=d.find(post_title_selector);console.log("Post Title: "+e.text()),jQuery(content_container).append(d),jQuery('hr[data-url="'+a+'"]').attr("data-title",e.text()).css("display","inline-block"),initialise_Scrollspy()})}}var content_container=auto_load_next_post_params.alnp_content_container,nav_container=auto_load_next_post_params.alnp_navigation_container,comments_container=auto_load_next_post_params.alnp_comments_container,post_title_selector=auto_load_next_post_params.alnp_title_selector,curr_url=window.location.href;jQuery.noConflict(),jQuery(document).ready(function(){window.location.href.indexOf("#comments")>-1||(console.log("Remove Comments: "+auto_load_next_post_params.alnp_remove_comments),"yes"===auto_load_next_post_params.alnp_remove_comments&&jQuery(comments_container).remove(),jQuery(content_container).prepend('
          '),initialise_Scrollspy(),initialise_History())}); \ No newline at end of file diff --git a/auto-load-next-post.php b/auto-load-next-post.php index 8af2b5a..ca35035 100644 --- a/auto-load-next-post.php +++ b/auto-load-next-post.php @@ -3,12 +3,12 @@ * Plugin Name: Auto Load Next Post * Plugin URI: https://github.com/seb86/Auto-Load-Next-Post * Description: Auto loads the next post as you scroll down the post. Also replaces the URL address and the page title with the next post. - * Version: 1.0.0 + * Version: 1.3.2 * Author: SĂ©bastien Dumont * Author URI: http://www.sebastiendumont.com * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt - * Text Domain: wordpress-plugin-boilerplate-light + * Text Domain: auto-load-next-post * Domain Path: languages * Network: false * GitHub Plugin URI: https://github.com/seb86/Auto-Load-Next-Post @@ -83,7 +83,7 @@ final class Auto_Load_Next_Post { * @access public * @var string */ - public $version = "1.0.0"; + public $version = "1.3.2"; /** * The WordPress version the plugin requires minumum. @@ -245,6 +245,7 @@ public function __construct() { add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'action_links' ) ); add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 ); add_action( 'init', array( $this, 'init_auto_load_next_post' ), 0 ); + add_action( 'wp_enqueue_scripts', array( $this, 'front_scripts_and_styles' ) ); // Loaded action do_action( 'auto_load_next_post_loaded' ); @@ -416,13 +417,11 @@ public function admin_includes() { public function init_auto_load_next_post() { add_rewrite_endpoint( 'partial', EP_PERMALINK ); + // Refresh permalinks flush_rewrite_rules(); // Set up localisation $this->load_plugin_textdomain(); - - // Load JavaScript and stylesheets - $this->register_scripts_and_styles(); } // END init_auto_load_next_post() /** @@ -488,55 +487,53 @@ public function plugin_path() { return untrailingslashit( plugin_dir_path( __FILE__ ) ); } // END plugin_path() + /** + * Get the plugin template path. + * + * @since 1.3.2 + * @access public + * @return string + */ + public function template_path() { + return 'auto-load-next-post/'; + } // END template_path() + /** * Registers and enqueues stylesheets and javascripts - * for the administration panel and the front of the site. + * for the front of the site. * - * @since 1.0.0 - * @access private - * @filter auto_load_next_post_admin_params + * @since 1.3.2 + * @access public * @filter auto_load_next_post_params */ - private function register_scripts_and_styles() { - if ( is_admin() ) { - $this->load_file( $this->plugin_slug . '_admin_script', '/assets/js/admin/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), $this->version ); - - // TipTip - $this->load_file( 'jquery-tiptip', '/assets/js/jquery-tiptip/jquery.tipTip' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), $this->version ); - - // Variables for Admin JavaScripts - wp_localize_script( $this->plugin_slug . '_admin_script', 'auto_load_next_post_admin_params', apply_filters( 'auto_load_next_post_admin_params', array( - 'plugin_url' => $this->plugin_url(), - 'i18n_nav_warning' => __( 'The changes you made will be lost if you navigate away from this page.', 'auto-load-next-post' ), - 'plugin_screen_id' => AUTO_LOAD_NEXT_POST_SCREEN_ID, + public function front_scripts_and_styles() { + /** + * Load Javascript if found as a singluar post either, + * single or page and is one of the selected post types. + */ + if ( is_singular() && in_array( get_post_type(), get_option( 'auto_load_next_post_get_post_types' ) ) ) { + $this->load_file( $this->plugin_slug . '-scrollspy', '/assets/js/frontend/scrollspy' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), $this->version ); + $this->load_file( $this->plugin_slug . '-history', '/assets/js/frontend/jquery.history.js', true, array('jquery'), $this->version ); + $this->load_file( $this->plugin_slug . '-script', '/assets/js/frontend/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array( $this->plugin_slug . '-scrollspy' ), $this->version ); + + // Variables for JS scripts + wp_localize_script( $this->plugin_slug . '-script', 'auto_load_next_post_params', apply_filters( 'auto_load_next_post_params', array( + 'alnp_content_container' => get_option( 'auto_load_next_post_content_container' ), + 'alnp_post_id_selector' => get_option( 'auto_load_next_post_id_selector' ), + 'alnp_title_selector' => get_option( 'auto_load_next_post_title_selector' ), + 'alnp_navigation_container' => get_option( 'auto_load_next_post_navigation_container' ), + 'alnp_comments_container' => get_option( 'auto_load_next_post_comments_container' ), + 'alnp_remove_comments' => get_option( 'auto_load_next_post_remove_comments' ), + 'alnp_google_analytics' => get_option( 'auto_load_next_post_google_analytics' ), ) ) ); - - // Stylesheets - $this->load_file( $this->plugin_slug . '_admin_style', '/assets/css/admin/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.css' ); - } - else { - //if ( is_singular() ) { - $this->load_file( $this->plugin_slug . '-scrollspy', '/assets/js/frontend/scrollspy' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), $this->version ); - $this->load_file( $this->plugin_slug . '-history', '/assets/js/frontend/jquery.history.js', true, array('jquery'), $this->version ); - $this->load_file( $this->plugin_slug . '-script', '/assets/js/frontend/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array( $this->plugin_slug . '-scrollspy' ), $this->version ); - - // Variables for JS scripts - wp_localize_script( $this->plugin_slug . '-script', 'auto_load_next_post_params', apply_filters( 'auto_load_next_post_params', array( - 'alnp_content_container' => get_option( 'auto_load_next_post_content_container' ), - 'alnp_title_selector' => get_option( 'auto_load_next_post_title_selector' ), - 'alnp_navigation_container' => get_option( 'auto_load_next_post_navigation_container' ), - 'alnp_comments_container' => get_option( 'auto_load_next_post_comments_container' ), - 'alnp_google_analytics' => get_option( 'auto_load_next_post_google_analytics' ), - ) ) ); - //} // END if is_singular() - } // end if/else + } // END if is_singular() && get_post_type() } // END register_scripts_and_styles() /** * Helper function for registering and enqueueing scripts and styles. * * @since 1.0.0 - * @access private + * @access public * @param string $name The ID to register with WordPress. * @param string $file_path The path to the actual file. * @param bool $is_script Optional, argument for if the incoming file_path is a JavaScript source file. @@ -544,7 +541,7 @@ private function register_scripts_and_styles() { * @param string $version Optional, can match the version of the plugin or version of the source file. * @global string $wp_version */ - private function load_file( $name, $file_path, $is_script = false, $support = array(), $version = '' ) { + public function load_file( $name, $file_path, $is_script = false, $support = array(), $version = '' ) { global $wp_version; $url = $this->plugin_url() . $file_path; @@ -577,6 +574,6 @@ function Auto_Load_Next_Post() { return Auto_Load_Next_Post::instance(); } -// Global for backwards compatibility. -$GLOBALS["auto_load_next_post"] = Auto_Load_Next_Post(); +// Run Plugin +Auto_Load_Next_Post(); ?> diff --git a/includes/admin/auto-load-next-post-admin-functions.php b/includes/admin/auto-load-next-post-admin-functions.php index c2eeaf3..95a9997 100644 --- a/includes/admin/auto-load-next-post-admin-functions.php +++ b/includes/admin/auto-load-next-post-admin-functions.php @@ -25,5 +25,3 @@ function auto_load_next_post_get_screen_ids() { 'settings_page_' . $auto_load_next_post_screen_id, ) ); } // END auto_load_next_post_get_screen_ids() - -?> diff --git a/includes/admin/auto-load-next-post-theme-support.php b/includes/admin/auto-load-next-post-theme-support.php new file mode 100644 index 0000000..401e496 --- /dev/null +++ b/includes/admin/auto-load-next-post-theme-support.php @@ -0,0 +1,4 @@ + diff --git a/includes/admin/class-auto-load-next-post-admin-help.php b/includes/admin/class-auto-load-next-post-admin-help.php index 111b9d0..dcae8a3 100644 --- a/includes/admin/class-auto-load-next-post-admin-help.php +++ b/includes/admin/class-auto-load-next-post-admin-help.php @@ -67,14 +67,12 @@ public function add_help_tabs() { '

          ' . __( 'Report a bug', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' ) ); - if ( !empty( Auto_Load_Next_Post()->web_url ) || !empty( Auto_Load_Next_Post()->wp_plugin_url ) || defined( AUTO_LOAD_NEXT_POST_GITHUB_REPO_URI ) ) { - $screen->set_help_sidebar( - '

          ' . __( 'For more information:', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' . - '

          ' . sprintf( __( 'About %s', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), Auto_Load_Next_Post()->name ) . '

          ' . - '

          ' . __( 'Project on WordPress.org', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' . - '

          ' . __( 'Project on Github', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' - ); - } + $screen->set_help_sidebar( + '

          ' . __( 'For more information:', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' . + '

          ' . sprintf( __( 'About %s', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), Auto_Load_Next_Post()->name ) . '

          ' . + '

          ' . __( 'Project on WordPress.org', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' . + '

          ' . __( 'Project on Github', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ) . '

          ' + ); } // END add_help_tabs() @@ -83,4 +81,3 @@ public function add_help_tabs() { } // END if class exists. return new Auto_Load_Next_Post_Admin_Help(); -?> diff --git a/includes/admin/class-auto-load-next-post-admin-menus.php b/includes/admin/class-auto-load-next-post-admin-menus.php index 8af82d5..5dbae0f 100644 --- a/includes/admin/class-auto-load-next-post-admin-menus.php +++ b/includes/admin/class-auto-load-next-post-admin-menus.php @@ -64,4 +64,3 @@ public function settings_page() { } // END if class exists. return new Auto_Load_Next_Post_Admin_Menus(); -?> diff --git a/includes/admin/class-auto-load-next-post-admin-notices.php b/includes/admin/class-auto-load-next-post-admin-notices.php new file mode 100644 index 0000000..36fba69 --- /dev/null +++ b/includes/admin/class-auto-load-next-post-admin-notices.php @@ -0,0 +1,74 @@ +plugin_url() . '/assets/css/admin/activation.css' ); + add_action( 'admin_notices', array( $this, 'theme_check_notice' ) ); + } + + } + } // END add_notices() + + /** + * Show the Theme Check notice. + * + * @since 1.1.1 + * @access public + */ + public function theme_check_notice() { + include( 'views/html-notice-theme-support.php' ); + } // END theme_check_notice() + +} // END Auto_Load_Next_Post_Admin_Notices class. + +} // END if class exists. + +return new Auto_Load_Next_Post_Admin_Notices(); diff --git a/includes/admin/class-auto-load-next-post-admin-settings.php b/includes/admin/class-auto-load-next-post-admin-settings.php index c51f19d..01ee5d5 100644 --- a/includes/admin/class-auto-load-next-post-admin-settings.php +++ b/includes/admin/class-auto-load-next-post-admin-settings.php @@ -672,10 +672,10 @@ public static function save_fields( $options, $current_tab, $current_section = ' } // Save all options as an array. Ready for export. - if( empty( $current_section ) ) { + if ( empty( $current_section ) ) { update_option( 'auto_load_next_post_options_' . $current_tab, $update_options ); } - else{ + else { update_option( 'auto_load_next_post_options_' . $current_tab . '_' . $current_section, $update_options ); } @@ -685,4 +685,3 @@ public static function save_fields( $options, $current_tab, $current_section = ' } // END class. } // end if class exists. -?> diff --git a/includes/admin/class-auto-load-next-post-admin.php b/includes/admin/class-auto-load-next-post-admin.php index 74fbc15..7a7087a 100644 --- a/includes/admin/class-auto-load-next-post-admin.php +++ b/includes/admin/class-auto-load-next-post-admin.php @@ -13,6 +13,11 @@ if ( ! class_exists( 'Auto_Load_Next_Post_Admin' ) ) { +/** + * Class - Auto_Load_Next_Post_Admin + * + * @since 1.0.0 + */ class Auto_Load_Next_Post_Admin { /** @@ -23,7 +28,8 @@ class Auto_Load_Next_Post_Admin { */ public function __construct() { // Actions - add_action( 'init', array( $this, 'includes' ) ); + add_action( 'init', array( $this, 'includes' ), 0 ); + add_action( 'admin_init', array( $this, 'register_scripts_and_styles' ), 10 ); // Filters add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); @@ -45,6 +51,7 @@ public function includes() { if ( ! auto_load_next_post_is_ajax() ) { // Main Plugin include( 'class-auto-load-next-post-admin-menus.php' ); + include( 'class-auto-load-next-post-admin-notices.php' ); // Plugin Help if ( apply_filters( 'auto_load_next_post_enable_admin_help_tab', true ) ) { @@ -53,6 +60,37 @@ public function includes() { } } // END includes() + /** + * Registers and enqueues stylesheets and javascripts + * for the administration panel. + * + * @since 1.0.0 + * @access public + * @filter auto_load_next_post_admin_params + */ + public function register_scripts_and_styles() { + Auto_Load_Next_Post()->load_file( Auto_Load_Next_Post()->plugin_slug . '_admin_script', '/assets/js/admin/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), Auto_Load_Next_Post()->version ); + + // Chosen + Auto_Load_Next_Post()->load_file( 'chosen', '/assets/js/chosen/chosen.jquery' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), Auto_Load_Next_Post()->version ); + + // TipTip + Auto_Load_Next_Post()->load_file( 'jquery-tiptip', '/assets/js/jquery-tiptip/jquery.tipTip' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.js', true, array('jquery'), Auto_Load_Next_Post()->version ); + + // Variables for Admin JavaScripts + wp_localize_script( Auto_Load_Next_Post()->plugin_slug . '_admin_script', 'auto_load_next_post_admin_params', apply_filters( 'auto_load_next_post_admin_params', array( + 'plugin_url' => Auto_Load_Next_Post()->plugin_url(), + 'i18n_nav_warning' => __( 'The changes you made will be lost if you navigate away from this page.', 'auto-load-next-post' ), + 'plugin_screen_id' => AUTO_LOAD_NEXT_POST_SCREEN_ID, + ) ) ); + + // Stylesheets + Auto_Load_Next_Post()->load_file( Auto_Load_Next_Post()->plugin_slug . '_admin_style', '/assets/css/admin/auto-load-next-post' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.css' ); + + Auto_Load_Next_Post()->load_file( Auto_Load_Next_Post()->plugin_slug . '_chosen_style', '/assets/css/chosen' . AUTO_LOAD_NEXT_POST_SCRIPT_MODE . '.css' ); + + } // END register_scripts_and_styles() + /** * Filters the admin footer text by placing links * for the plugin including a simply thank you to @@ -86,7 +124,7 @@ public function admin_footer_text( $text ) { } } - // Rating and Review added since 1.0.2 + // Rating and Review if ( apply_filters( 'auto_load_next_post_admin_footer_review_text', true ) ) { $text .= sprintf( __( 'If you like %1$s please leave a ★★★★★ rating on WordPress.org. A huge thank you in advance!', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), Auto_Load_Next_Post()->name, Auto_Load_Next_Post()->wp_plugin_review_url ); } @@ -141,4 +179,3 @@ public function update_footer( $text ) { } // END if class exists return new Auto_Load_Next_Post_Admin(); -?> diff --git a/includes/admin/class-auto-load-next-post-install.php b/includes/admin/class-auto-load-next-post-install.php index 2a785a9..f7dfeb5 100644 --- a/includes/admin/class-auto-load-next-post-install.php +++ b/includes/admin/class-auto-load-next-post-install.php @@ -14,7 +14,9 @@ if ( ! class_exists( 'Auto_Load_Next_Post_Install' ) ) { /** - * Auto_Load_Next_Post_Install Class + * Class - Auto_Load_Next_Post_Install + * + * @since 1.0.0 */ class Auto_Load_Next_Post_Install { @@ -98,4 +100,3 @@ public function delete_options() { } // END if class exists. return new Auto_Load_Next_Post_Install(); -?> diff --git a/includes/admin/settings/class-auto-load-next-post-settings-general.php b/includes/admin/settings/class-auto-load-next-post-settings-general.php index a4fafde..56c7a27 100644 --- a/includes/admin/settings/class-auto-load-next-post-settings-general.php +++ b/includes/admin/settings/class-auto-load-next-post-settings-general.php @@ -13,7 +13,10 @@ if ( ! class_exists( 'Auto_Load_Next_Post_Settings_General_Tab' ) ) { /** - * Auto_Load_Next_Post_Settings_General_Tab + * Class - Auto_Load_Next_Post_Settings_General_Tab + * + * @extends Auto_Load_Next_Post_Settings_Page + * @since 1.0.0 */ class Auto_Load_Next_Post_Settings_General_Tab extends Auto_Load_Next_Post_Settings_Page { @@ -48,6 +51,23 @@ public function save() { Auto_Load_Next_Post_Admin_Settings::save_fields( $settings, $current_tab ); } + /** + * Get post types + * + * This returns a list of public registered post types. + * + * @since 1.1.1 + * @access public + * @return array + */ + public function get_post_types() { + $post_types = get_post_types( array( 'public' => true ), 'names' ); + + + + return $post_types; + } + /** * Get settings array * @@ -65,12 +85,36 @@ public function get_settings() { 'id' => $this->id . '_options' ), + array( + 'title' => __( 'Restrict Post Types', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'desc' => __( 'Select which post types you wish to load automatically.', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'desc_tip' => true, + 'id' => 'auto_load_next_post_get_post_types', + 'class' => 'chosen-select', + 'css' => 'min-width:300px;', + 'default' => array( 'post' ), + 'type' => 'multiselect', + 'options' => $this->get_post_types(), + 'autoload' => false + ), + array( 'title' => __( 'Content Container', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc' => __( 'Example: div.single', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc_tip' => true, 'id' => 'auto_load_next_post_content_container', - 'default' => '', + 'default' => 'div.single', + 'type' => 'text', + 'css' => 'min-width:300px;', + 'autoload' => false + ), + + array( + 'title' => __( 'Post ID Selector', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'desc' => __( 'Example: article', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'desc_tip' => true, + 'id' => 'auto_load_next_post_id_selector', + 'default' => 'article', 'type' => 'text', 'css' => 'min-width:300px;', 'autoload' => false @@ -81,7 +125,7 @@ public function get_settings() { 'desc' => __( 'Example: h1.entry-title', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc_tip' => true, 'id' => 'auto_load_next_post_title_selector', - 'default' => '', + 'default' => 'h1.entry-title', 'type' => 'text', 'css' => 'min-width:300px;', 'autoload' => false @@ -92,7 +136,7 @@ public function get_settings() { 'desc' => __( 'Example: nav.post-navigation', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc_tip' => true, 'id' => 'auto_load_next_post_navigation_container', - 'default' => '', + 'default' => 'nav.post-navigation', 'type' => 'text', 'css' => 'min-width:300px;', 'autoload' => false @@ -103,12 +147,20 @@ public function get_settings() { 'desc' => __( 'Example: div#comments', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc_tip' => true, 'id' => 'auto_load_next_post_comments_container', - 'default' => '', + 'default' => 'div#comments', 'type' => 'text', 'css' => 'min-width:300px;', 'autoload' => false ), + array( + 'title' => __( 'Remove Comments', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'desc' => __( 'Enable to remove comments when each post loads.', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), + 'id' => 'auto_load_next_post_remove_comments', + 'default' => 'yes', + 'type' => 'checkbox' + ), + array( 'title' => __( 'Update Google Analytics', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), 'desc' => __( 'Enable to update your Google Analytics each time a post is automatically loaded.', AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ), @@ -134,4 +186,3 @@ public function get_settings() { } // end if class exists return new Auto_Load_Next_Post_Settings_General_Tab(); -?> diff --git a/includes/admin/settings/class-auto-load-next-post-settings-page.php b/includes/admin/settings/class-auto-load-next-post-settings-page.php index 7cd3f57..3b59d5c 100644 --- a/includes/admin/settings/class-auto-load-next-post-settings-page.php +++ b/includes/admin/settings/class-auto-load-next-post-settings-page.php @@ -14,7 +14,9 @@ if ( ! class_exists( 'Auto_Load_Next_Post_Settings_Page' ) ) { /** - * Auto_Load_Next_Post_Settings_Page + * Class - Auto_Load_Next_Post_Settings_Page + * + * @since 1.0.0 */ class Auto_Load_Next_Post_Settings_Page { @@ -93,7 +95,7 @@ public function output_sections() { $section_link = admin_url( 'options-general.php?page=auto-load-next-post-settings&tab=' . $this->id . '§ion=' . sanitize_title( $id ) ); // If this section is default then remove the variable from this link. - if( $id == '' ) { + if ( $id == '' ) { $section_link = remove_query_arg( 'section', $section_link ); } @@ -142,4 +144,3 @@ public function save() { } // END class } // END if class exists. -?> diff --git a/includes/admin/views/html-notice-theme-support.php b/includes/admin/views/html-notice-theme-support.php new file mode 100644 index 0000000..f44039d --- /dev/null +++ b/includes/admin/views/html-notice-theme-support.php @@ -0,0 +1,11 @@ + +
          +

          The theme you are using has not declared support for %s – please read the integration guide.', Auto_Load_Next_Post()->name ), AUTO_LOAD_NEXT_POST_TEXT_DOMAIN ); ?>

          +

          +
          diff --git a/includes/auto-load-next-post-conditional-functions.php b/includes/auto-load-next-post-conditional-functions.php index 20b07e6..070cc16 100644 --- a/includes/auto-load-next-post-conditional-functions.php +++ b/includes/auto-load-next-post-conditional-functions.php @@ -28,5 +28,3 @@ function auto_load_next_post_is_ajax() { return ( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) == 'xmlhttprequest' ) ? true : false; } // END auto_load_next_post_is_ajax } - -?> diff --git a/includes/auto-load-next-post-core-functions.php b/includes/auto-load-next-post-core-functions.php index 0ad28b6..6afca86 100644 --- a/includes/auto-load-next-post-core-functions.php +++ b/includes/auto-load-next-post-core-functions.php @@ -27,11 +27,18 @@ function auto_load_next_post_template_redirect() { if ( ! isset( $wp_query->query_vars['partial'] ) || ! is_singular() ) return; - // include custom template - include( get_stylesheet_directory() . '/content-partial.php' ); + // Load file from theme if one exists. + $template_path = get_stylesheet_directory() . '/' . Auto_Load_Next_Post()->template_path(); + if ( file_exists ( $template_path . 'content-partial.php' ) ) { + include ( $template_path . 'content-partial.php' ); + } + + // If theme does not have the file, load default from plugin. + $default_path = Auto_Load_Next_Post()->plugin_path(); + if ( file_exists ( $default_path . '/template/content-partial.php' ) ) { + include ( $default_path . '/template/content-partial.php' ); + } exit; } add_action( 'template_redirect', 'auto_load_next_post_template_redirect' ); - -?> diff --git a/includes/auto-load-next-post-formatting-functions.php b/includes/auto-load-next-post-formatting-functions.php index d4c1f8d..d891f38 100644 --- a/includes/auto-load-next-post-formatting-functions.php +++ b/includes/auto-load-next-post-formatting-functions.php @@ -22,5 +22,3 @@ function auto_load_next_post_clean( $var ) { return sanitize_text_field( $var ); } // END auto_load_next_post_clean() - -?> diff --git a/languages/auto-load-next-post.mo b/languages/auto-load-next-post.mo index 54320b8..4bcd252 100644 Binary files a/languages/auto-load-next-post.mo and b/languages/auto-load-next-post.mo differ diff --git a/languages/auto-load-next-post.pot b/languages/auto-load-next-post.pot index d3bf681..b1670a2 100644 --- a/languages/auto-load-next-post.pot +++ b/languages/auto-load-next-post.pot @@ -4,15 +4,15 @@ msgstr "" "Project-Id-Version: Auto Load Next Post 1.0.0\n" "Report-Msgid-Bugs-To: https://github.com/seb86/WordPress-Plugin-Boilerplate/" "issues\n" -"POT-Creation-Date: 2015-04-03 18:16+0100\n" -"PO-Revision-Date: 2015-04-03 18:16+0100\n" +"POT-Creation-Date: 2015-05-17 18:45+0100\n" +"PO-Revision-Date: 2015-05-17 18:45+0100\n" "Last-Translator: Auto Load Next Post \n" "Language-Team: WP-Translations \n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.7.6\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-Basepath: ..\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -25,31 +25,26 @@ msgstr "" msgid "Cheatin’ huh?" msgstr "" -#: auto-load-next-post.php:264 +#: auto-load-next-post.php:265 msgid "Settings" msgstr "" -#: auto-load-next-post.php:265 +#: auto-load-next-post.php:266 #: includes/admin/class-auto-load-next-post-admin-help.php:56 msgid "Support" msgstr "" -#: auto-load-next-post.php:290 +#: auto-load-next-post.php:291 #: includes/admin/class-auto-load-next-post-admin-help.php:48 -#: includes/admin/class-auto-load-next-post-admin.php:74 +#: includes/admin/class-auto-load-next-post-admin.php:112 msgid "Documentation" msgstr "" -#: auto-load-next-post.php:380 +#: auto-load-next-post.php:379 #, php-format msgid "Sorry, %s requires WordPress " msgstr "" -#: auto-load-next-post.php:512 -#: includes/admin/class-auto-load-next-post-admin-settings.php:138 -msgid "The changes you made will be lost if you navigate away from this page." -msgstr "" - #: includes/admin/class-auto-load-next-post-admin-help.php:50 #, php-format msgid "" @@ -90,20 +85,20 @@ msgstr "" msgid "Report a bug" msgstr "" -#: includes/admin/class-auto-load-next-post-admin-help.php:72 +#: includes/admin/class-auto-load-next-post-admin-help.php:71 msgid "For more information:" msgstr "" -#: includes/admin/class-auto-load-next-post-admin-help.php:73 +#: includes/admin/class-auto-load-next-post-admin-help.php:72 #, php-format msgid "About %s" msgstr "" -#: includes/admin/class-auto-load-next-post-admin-help.php:74 +#: includes/admin/class-auto-load-next-post-admin-help.php:73 msgid "Project on WordPress.org" msgstr "" -#: includes/admin/class-auto-load-next-post-admin-help.php:75 +#: includes/admin/class-auto-load-next-post-admin-help.php:74 msgid "Project on Github" msgstr "" @@ -120,6 +115,11 @@ msgstr "" msgid "Your settings have been saved." msgstr "" +#: includes/admin/class-auto-load-next-post-admin-settings.php:138 +#: includes/admin/class-auto-load-next-post-admin.php:83 +msgid "The changes you made will be lost if you navigate away from this page." +msgstr "" + #: includes/admin/class-auto-load-next-post-admin-settings.php:489 msgid "Hard Crop?" msgstr "" @@ -128,11 +128,11 @@ msgstr "" msgid "Select a page…" msgstr "" -#: includes/admin/class-auto-load-next-post-admin.php:73 +#: includes/admin/class-auto-load-next-post-admin.php:111 msgid "Website" msgstr "" -#: includes/admin/class-auto-load-next-post-admin.php:91 +#: includes/admin/class-auto-load-next-post-admin.php:129 #, php-format msgid "" "If you like %1$s please leave a WordPress.org. A huge thank you in advance!" msgstr "" -#: includes/admin/class-auto-load-next-post-admin.php:120 +#: includes/admin/class-auto-load-next-post-admin.php:158 msgid "Contribute" msgstr "" -#: includes/admin/class-auto-load-next-post-admin.php:121 +#: includes/admin/class-auto-load-next-post-admin.php:159 msgid "Report Bugs" msgstr "" -#: includes/admin/class-auto-load-next-post-admin.php:130 +#: includes/admin/class-auto-load-next-post-admin.php:168 #, php-format msgid "%s Version" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:28 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:31 msgid "General" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:62 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:82 msgid "Information" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:64 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:84 msgid "For the plugin to work you need to set the variables below." msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:69 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:89 +msgid "Restrict Post Types" +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:90 +msgid "Select which post types you wish to load automatically." +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:102 msgid "Content Container" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:70 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:103 msgid "Example: div.single" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:80 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:113 +msgid "Post ID Selector" +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:114 +msgid "Example: article" +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:124 msgid "Post Title Selector" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:81 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:125 msgid "Example: h1.entry-title" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:91 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:135 msgid "Post Navigation Container" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:92 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:136 msgid "Example: nav.post-navigation" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:102 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:146 msgid "Comments Container" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:103 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:147 msgid "Example: div#comments" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:113 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:157 +msgid "Remove Comments" +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:158 +msgid "Enable to remove comments when each post loads." +msgstr "" + +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:165 msgid "Update Google Analytics" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:114 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:166 msgid "" "Enable to update your Google Analytics each time a post is automatically " "loaded." msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:121 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:173 msgid "Remove all data on uninstall?" msgstr "" -#: includes/admin/settings/class-auto-load-next-post-settings-general.php:122 +#: includes/admin/settings/class-auto-load-next-post-settings-general.php:174 msgid "" "If enabled, all settings for this plugin will all be deleted when " "uninstalling via Plugins > Delete." @@ -220,3 +244,25 @@ msgstr "" #: includes/admin/views/html-admin-settings.php:24 msgid "Save changes" msgstr "" + +#: includes/admin/views/html-notice-theme-support.php:10 +msgid "Supporting your theme" +msgstr "" + +#: includes/admin/views/html-notice-theme-support.php:10 +msgid "Hide this notice" +msgstr "" + +#: template/content-partial.php:23 +msgid "Post navigation" +msgstr "" + +#: template/content-partial.php:25 +msgctxt "Previous post link" +msgid "←" +msgstr "" + +#: template/content-partial.php:26 +msgctxt "Next post link" +msgid "→" +msgstr "" diff --git a/package.json b/package.json new file mode 100644 index 0000000..6250931 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "auto-load-next-post", + "title": "Auto Load Next Post", + "version": "1.3.2", + "homepage": "http://www.sebastiendumont.com/plugins/auto-load-next-post/", + "repository": { + "type": "git", + "url": "https://github.com/seb86/Auto-Load-Next-Post.git" + }, + "private": true, + "main": "Gruntfile.js", + "devDependencies": { + "grunt": "~0.4.5", + "grunt-exec": "~0.4.5", + "grunt-wp-i18n": "~0.4.7", + "grunt-potomo": "~2.1.0", + "load-grunt-tasks": "~0.2.0", + "grunt-checktextdomain": "^0.1.1", + } +} diff --git a/readme.txt b/readme.txt index d9b7452..3c9c6c6 100644 --- a/readme.txt +++ b/readme.txt @@ -3,8 +3,8 @@ Contributors: sebd86 Donate link: http://www.sebastiendumont.com/donation/ Tags: auto load, posts, scrolling, history Requires at least: 4.0 -Tested up to: 4.1.1 -Stable tag: 1.0.0 +Tested up to: 4.2.2 +Stable tag: 1.3.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -22,6 +22,8 @@ After installing the plugin and completing the settings page, you will need to p See Documentation for more information. = Features = +* Can restrict it to load only on specific post types. - NEW in v1.3.2 +* You now have the option to hide the comments if you wish. - NEW in v1.3.2 * Track each post load with Google Analytics. ( Requires Google Analytics to be applied for this to work. ) = Documentation = @@ -59,12 +61,28 @@ Installing "Auto Load Next Post" can be done either by searching for "Auto Load == Screenshots == 1. Admin Settings Page +2. Theme support admin notification == Changelog == += 1.3.2 : 17th May 2015 = +* Added more theme support with compatible theme template file which can be overrided. +* Added option to enable auto loading posts for specific post types. +* Added option for comments. Now you can choose to show or hide rather than forcing it to hide automatically. +* Added Chosen (v1.4.2) Javascript by [Harvest](http://harvesthq.github.io/chosen/) +* Added console.logs in the Javascript for debugging. +* Corrected text domain name in plugin header. +* Corrected access to function load_file() from private to public +* Corrected access to function register_scripts_and_styles() from private to public +* Corrected error with uninstall.php file +* Moved function register_scripts_and_styles() to class-auto-load-next-post-admin.php +* Filtered the Javascript to load only on singular posts and the enabled post types. +* Removed security issue by accessing $GLOBALS directly. +* Removed all closing PHP tags omitting at the end of each file. + = 1.0.0 : 4th April 2015 = * Initial version == Upgrade Notice == -= 1.0.0 : 4th April 2015 = -* Initial version += 1.1.1 : 11th May 2015 = +* Please upgrade for better theme support and security fix. diff --git a/screenshot-1.png b/screenshot-1.png index f671b45..fb35f2b 100644 Binary files a/screenshot-1.png and b/screenshot-1.png differ diff --git a/screenshot-2.png b/screenshot-2.png new file mode 100644 index 0000000..ea74f31 Binary files /dev/null and b/screenshot-2.png differ diff --git a/template/content-partial.php b/template/content-partial.php new file mode 100644 index 0000000..a2e38a7 --- /dev/null +++ b/template/content-partial.php @@ -0,0 +1,31 @@ + + + \ No newline at end of file diff --git a/uninstall.php b/uninstall.php index f28baec..e57780e 100644 --- a/uninstall.php +++ b/uninstall.php @@ -14,7 +14,7 @@ // For a single site if ( ! is_multisite() ) { - $uninstall = $settings->get_option( 'auto_load_next_post_uninstall_data' ); + $uninstall = get_option( 'auto_load_next_post_uninstall_data' ); if ( ! empty( $uninstall ) ) { // Delete options