Changeset 2727307
- Timestamp:
- 05/20/2022 10:06:32 AM (4 years ago)
- Location:
- schedule-terms
- Files:
-
- 22 edited
- 1 copied
-
tags/1.0.6 (copied) (copied from schedule-terms/trunk)
-
tags/1.0.6/build/editor.asset.php (modified) (1 diff)
-
tags/1.0.6/build/editor.js (modified) (1 diff)
-
tags/1.0.6/includes/Term/UI.php (modified) (4 diffs)
-
tags/1.0.6/readme.txt (modified) (1 diff)
-
tags/1.0.6/schedule-terms.php (modified) (1 diff)
-
tags/1.0.6/src/editor/components/DatetimeControl.tsx (modified) (2 diffs)
-
tags/1.0.6/src/editor/index.tsx (modified) (2 diffs)
-
tags/1.0.6/vendor/autoload.php (modified) (1 diff)
-
tags/1.0.6/vendor/composer/autoload_real.php (modified) (3 diffs)
-
tags/1.0.6/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/1.0.6/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/build/editor.asset.php (modified) (1 diff)
-
trunk/build/editor.js (modified) (1 diff)
-
trunk/includes/Term/UI.php (modified) (4 diffs)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/schedule-terms.php (modified) (1 diff)
-
trunk/src/editor/components/DatetimeControl.tsx (modified) (2 diffs)
-
trunk/src/editor/index.tsx (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (3 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
schedule-terms/tags/1.0.6/build/editor.asset.php
r2727088 r2727307 1 <?php return array('dependencies' => array('moment', 'wp-components', 'wp-core-data', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => ' 9027589ef94f28d15116b2c1f812c571');1 <?php return array('dependencies' => array('moment', 'wp-components', 'wp-core-data', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => 'adc00d5a0f4b33a08cf7e8b839bf3064'); -
schedule-terms/tags/1.0.6/build/editor.js
r2727088 r2727307 1 !function(){"use strict";var e={n:function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,n=window.wp.plugins,r=window.wp.data,o=window.wp.coreData,l=window.wp.editor,a=window.wp.editPost,s=window.wp.i18n,i=window.wp.components, u=window.wp.date,m=window.moment,c=e.n(m);const d="YYYY-MM-DDTHH:mm:ss",p=e=>{let{term:n,taxonomy:r,label:l,postType:a,type:m}=e;const[p,g]=(0,o.useEntityProp)("postType",a,"meta"),f=(0,t.useRef)(),w=(0,u.__experimentalGetSettings)(),[y=w.formats.date]=(0,o.useEntityProp)("root","site","date_format"),[h=w.formats.time]=(0,o.useEntityProp)("root","site","time_format"),v=()=>{const{timezone:e}=w,[t,n]=e.offset.toString().split(".");return`${Number(t)>0?"+":"-"}${String(Math.abs(t)).padStart(2,"0")}:${String(Math.floor(60*Number(`0.${n||0}`))).padStart(2,"0")}`},_=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;const r=null==p||null===(e=p.schedule_terms)||void 0===e?void 0:e.find((e=>e.term===n&&e.type===m));if(null!=r&&r.datetime)return c()(r.datetime).utcOffset(v()).format(t)}();return(0,t.createElement)(i.PanelRow,{ref:f},(0,t.createElement)("span",null,l),(0,t.createElement)(i.Dropdown,{popoverProps:{anchorRef:f.current},position:"bottom left",renderToggle:e=>{let{onToggle:n,isOpen:r}=e;return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(i.Button,{onClick:n,"aria-expanded":r,variant:"tertiary"},_?(0,u.dateI18n)(`${y} ${h}`,_):(0,s.__)("none","schedule-terms")))},renderContent:()=>(0,t.createElement)("div",null,(0,t.createElement)(i.DateTimePicker,{currentDate:_,onChange:e=>(e=>{var t;const o=(null==p||null===(t=p.schedule_terms)||void 0===t?void 0:t.filter((e=>!(e.term===n&&e.type===m))))||[];g({...p,schedule_terms:[...o,e?{term:n,taxonomy:r,type:m,datetime:c()(`${e}${v()}`).utc().format()}:null].filter((e=>null!==e))})})(e)}))}))},g=e=>{let{taxonomies:n,terms:r,currentPostType:o}=e;return(0,t.createElement)("div",null,null==n?void 0:n.map((e=>{var n;return(0,t.createElement)("div",{key:e.slug},r[e.slug]&&r[e.slug].length>0&&(null===(n=r[e.slug])||void 0===n?void 0:n.map((n=>(0,t.createElement)("div",{key:n.id},(0,t.createElement)("h4",null,e.slug,": ",n.name),(0,t.createElement)(p,{label:(0,s.__)("Attach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"attach",postType:o}),(0,t.createElement)(p,{label:(0,s.__)("Detach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"detach",postType:o}))))))})))};(0,n.registerPlugin)("schedule-terms",{render:()=>{const{postType:e,taxonomies:n,terms:i}=(0,r.useSelect)((e=>{const{getTaxonomies:t,getEntityRecords:n}=e(o.store),r=e(l.store).getCurrentPostType(),a=(t({per_page:-1})||[]).filter((e=>e.types.includes(r))),s=Object.fromEntries(a.map((e=>{var t;const r=null===(t=n("taxonomy",e.slug,{per_page:-1}))||void 0===t?void 0:t.filter((e=>{let{meta:{schedule_terms_active:t}}=e;return t}));return[e.slug,r]})));return{postType:r,taxonomies:a,terms:s}}));return(0,t.createElement)(a.PluginDocumentSettingPanel,{name:"schedule-terms",title:(0,s.__)("Schedule Terms","schedule-terms"),className:"schedule-terms"},(0,t.createElement)(g,{currentPostType:e,taxonomies:n,terms:i}))},icon:"clock"})}();1 !function(){"use strict";var e={n:function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,n=window.wp.plugins,r=window.wp.data,o=window.wp.coreData,l=window.wp.editor,a=window.wp.editPost,s=window.wp.i18n,i=window.wp.components,m=window.wp.date,u=window.moment,c=e.n(u);const d="YYYY-MM-DDTHH:mm:ss",p=e=>{let{term:n,taxonomy:r,label:l,postType:a,type:u}=e;const[p,g]=(0,o.useEntityProp)("postType",a,"meta"),y=(0,t.useRef)(),f=(0,m.__experimentalGetSettings)(),[w=f.formats.date]=(0,o.useEntityProp)("root","site","date_format"),[h=f.formats.time]=(0,o.useEntityProp)("root","site","time_format"),v=()=>{const{timezone:e}=f,[t,n]=e.offset.toString().split(".");return`${Number(t)>0?"+":"-"}${String(Math.abs(t)).padStart(2,"0")}:${String(Math.floor(60*Number(`0.${n||0}`))).padStart(2,"0")}`},_=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;const o=null==p||null===(e=p.schedule_terms)||void 0===e?void 0:e.find((e=>e.term===n&&e.type===u&&e.taxonomy===r));if(null!=o&&o.datetime)return c()(o.datetime).utcOffset(v()).format(t)}();return(0,t.createElement)(i.PanelRow,{ref:y},(0,t.createElement)("span",null,l),(0,t.createElement)(i.Dropdown,{popoverProps:{anchorRef:y.current},position:"bottom left",renderToggle:e=>{let{onToggle:n,isOpen:r}=e;return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(i.Button,{onClick:n,"aria-expanded":r,variant:"tertiary"},_?(0,m.dateI18n)(`${w} ${h}`,_):(0,s.__)("none","schedule-terms")))},renderContent:()=>(0,t.createElement)("div",null,(0,t.createElement)(i.DateTimePicker,{currentDate:_,onChange:e=>(e=>{var t;const o=(null==p||null===(t=p.schedule_terms)||void 0===t?void 0:t.filter((e=>!(e.term===n&&e.type===u&&e.taxonomy===r))))||[];g({...p,schedule_terms:[...o,e?{term:n,taxonomy:r,type:u,datetime:c()(`${e}${v()}`).utc().format()}:null].filter((e=>null!==e))})})(e)}))}))},g=e=>{let{taxonomies:n,terms:r,currentPostType:o}=e;return(0,t.createElement)("div",null,null==n?void 0:n.map((e=>{var n;return(0,t.createElement)("div",{key:e.slug},r[e.slug]&&r[e.slug].length>0&&(null===(n=r[e.slug])||void 0===n?void 0:n.map((n=>(0,t.createElement)("div",{key:n.id},(0,t.createElement)("h4",null,e.name,": ",n.name),(0,t.createElement)(p,{label:(0,s.__)("Attach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"attach",postType:o}),(0,t.createElement)(p,{label:(0,s.__)("Detach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"detach",postType:o}))))))})))};(0,n.registerPlugin)("schedule-terms",{render:()=>{const{postType:e,taxonomies:n,terms:i}=(0,r.useSelect)((e=>{const{getTaxonomies:t,getEntityRecords:n}=e(o.store),r=e(l.store).getCurrentPostType(),a=(t({per_page:-1})||[]).filter((e=>e.types.includes(r))),s=Object.fromEntries(a.map((e=>{var t;const r=null===(t=n("taxonomy",e.slug,{per_page:-1}))||void 0===t?void 0:t.filter((e=>{let{meta:{schedule_terms_active:t}}=e;return t}));return[e.slug,r]})));return{postType:r,taxonomies:a,terms:s}}));return(0,t.createElement)(a.PluginDocumentSettingPanel,{name:"schedule-terms",title:(0,s.__)("Schedule Terms","schedule-terms"),className:"schedule-terms"},(0,t.createElement)(g,{currentPostType:e,taxonomies:n,terms:i}))},icon:"clock"})}(); -
schedule-terms/tags/1.0.6/includes/Term/UI.php
r2727069 r2727307 105 105 add_action( "wp_ajax_{$this->meta_key}_terms", array( $this, 'ajax_update' ) ); 106 106 107 add_filter( 'terms_clauses', array( $this, 'terms_clauses' ), 10, 3 );108 add_filter( 'get_terms_orderby', array( $this, 'get_terms_orderby' ), 10, 3 );109 110 107 foreach ( $this->taxonomies as $value ) { 111 108 … … 114 111 add_filter( "manage_edit-{$value}_columns", array( $this, 'add_column_header' ) ); 115 112 add_filter( "manage_{$value}_custom_column", array( $this, 'add_column_value' ), 10, 3 ); 116 add_filter( "manage_edit-{$value}_sortable_columns", array( $this, 'sortable_columns' ) );117 113 } 118 114 … … 144 140 add_action( 'quick_edit_custom_box', array( $this, 'quick_edit_meta' ), 10, 3 ); 145 141 } 146 }147 148 /** Get Terms *************************************************************/149 150 /**151 * Filter `get_terms_orderby` and tweak for meta_query orderby's.152 *153 * @param string $orderby `ORDERBY` clause of the terms query.154 * @param array $args An array of term query arguments.155 * @param string[] $taxonomies An array of taxonomy names.156 *157 * @return string158 */159 public function get_terms_orderby( string $orderby = '', array $args = array(), array $taxonomies = array() ): string {160 161 // Bail if not a target taxonomy.162 if ( ! $this->is_taxonomy( $taxonomies ) ) {163 return $orderby;164 }165 166 // Ordering by meta key.167 if ( filter_input( INPUT_GET, 'orderby', FILTER_SANITIZE_STRING ) === $this->meta_key ) {168 $orderby = 'meta_value';169 }170 171 return $orderby;172 }173 174 /**175 * Filter get_terms() and maybe add `meta_query`176 *177 * @param string[] $clauses Array of query SQL clauses.178 * @param string[] $taxonomies An array of taxonomy names.179 * @param array $args An array of term query arguments.180 *181 * @return string[]182 */183 public function terms_clauses( array $clauses = array(), array $taxonomies = array(), array $args = array() ): array {184 global $wpdb;185 186 if ( ! $this->is_taxonomy( $taxonomies ) ) {187 return $clauses;188 }189 190 // Default allowed keys & primary key.191 $allowed_keys = array( $this->meta_key );192 193 // Set allowed keys.194 $allowed_keys[] = 'meta_value';195 $allowed_keys[] = 'meta_value_num';196 197 // Tweak orderby.198 $orderby = $args['orderby'] ?? '';199 200 // Bail if no orderby or allowed_keys.201 if ( ! in_array( $orderby, $allowed_keys, true ) ) {202 return $clauses;203 }204 205 // Join term meta data.206 $clauses['join'] .= " INNER JOIN $wpdb->termmeta AS tm ON t.term_id = tm.term_id";207 208 // Maybe order by term meta.209 switch ( $args['orderby'] ) {210 case $this->meta_key:211 case 'meta_value':212 if ( ! empty( $this->key_type ) ) {213 $clauses['orderby'] = 'ORDER BY CAST(tm.meta_value AS tm)';214 } else {215 $clauses['orderby'] = 'ORDER BY tm.meta_value';216 }217 $clauses['fields'] .= ', tm.*';218 $clauses['where'] .= " AND tm.meta_key = '$this->meta_key'";219 break;220 case 'meta_value_num':221 $clauses['orderby'] = 'ORDER BY tm.meta_value+0';222 $clauses['fields'] .= ', tm.*';223 $clauses['where'] .= " AND tm.meta_key = '$this->meta_key'";224 break;225 }226 227 // Return maybe modified clauses.228 return $clauses;229 142 } 230 143 … … 341 254 } 342 255 343 /**344 * Allow sorting by this `meta_key`345 *346 * @param string[] $columns columns.347 *348 * @return string[]349 * @since 2.0.0350 */351 public function sortable_columns( array $columns = array() ): array {352 // phpcs:ignore353 $columns[ $this->meta_key ] = $this->meta_key;354 355 return $columns;356 }357 256 358 257 /** -
schedule-terms/tags/1.0.6/readme.txt
r2727106 r2727307 7 7 Tested up to: 5.9 8 8 Requires PHP: 7.3 9 Stable tag: 1.0. 59 Stable tag: 1.0.6 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html -
schedule-terms/tags/1.0.6/schedule-terms.php
r2727106 r2727307 10 10 * Text Domain: schedule-terms 11 11 * Domain Path: /languages 12 * Version: 1.0. 512 * Version: 1.0.6 13 13 * 14 14 * @package Schedule_Terms -
schedule-terms/tags/1.0.6/src/editor/components/DatetimeControl.tsx
r2727088 r2727307 81 81 const otherItems = meta?.schedule_terms?.filter( ( item ) => { 82 82 return !( 83 item.term === term && item.type === type 83 item.term === term && item.type === type && item.taxonomy === taxonomy 84 84 ); 85 85 } ) || []; … … 107 107 const getDatetime = ( format = TIMEZONELESS_FORMAT ) => { 108 108 const val = meta?.schedule_terms?.find( ( item ) => { 109 return item.term === term && item.type === type ;109 return item.term === term && item.type === type && item.taxonomy === taxonomy; 110 110 } ); 111 111 -
schedule-terms/tags/1.0.6/src/editor/index.tsx
r2727069 r2727307 24 24 interface Taxonomy { 25 25 slug: string; 26 name: string; 27 description: string; 26 28 } 27 29 … … 42 44 <div key={ term.id }> 43 45 <h4> 44 { taxonomy. slug}: { term.name }46 { taxonomy.name }: { term.name } 45 47 </h4> 46 48 <DatetimeControl -
schedule-terms/tags/1.0.6/vendor/autoload.php
r2727106 r2727307 10 10 require_once __DIR__ . '/composer/autoload_real.php'; 11 11 12 return ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c::getLoader();12 return ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2::getLoader(); -
schedule-terms/tags/1.0.6/vendor/composer/autoload_real.php
r2727106 r2727307 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c5 class ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $includeFiles = \Composer\Autoload\ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$files;36 $includeFiles = \Composer\Autoload\ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$files; 37 37 foreach ($includeFiles as $fileIdentifier => $file) { 38 composerRequire 0c63a2f1a92d145f38bf16e4a500e84c($fileIdentifier, $file);38 composerRequire3ec1cecb83e54af786b71a28bfc07ff2($fileIdentifier, $file); 39 39 } 40 40 … … 48 48 * @return void 49 49 */ 50 function composerRequire 0c63a2f1a92d145f38bf16e4a500e84c($fileIdentifier, $file)50 function composerRequire3ec1cecb83e54af786b71a28bfc07ff2($fileIdentifier, $file) 51 51 { 52 52 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
schedule-terms/tags/1.0.6/vendor/composer/autoload_static.php
r2727106 r2727307 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c7 class ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2 8 8 { 9 9 public static $files = array ( … … 180 180 { 181 181 return \Closure::bind(function () use ($loader) { 182 $loader->prefixLengthsPsr4 = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$prefixLengthsPsr4;183 $loader->prefixDirsPsr4 = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$prefixDirsPsr4;184 $loader->classMap = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$classMap;182 $loader->prefixLengthsPsr4 = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$prefixLengthsPsr4; 183 $loader->prefixDirsPsr4 = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$prefixDirsPsr4; 184 $loader->classMap = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$classMap; 185 185 186 186 }, null, ClassLoader::class); -
schedule-terms/tags/1.0.6/vendor/composer/installed.php
r2727106 r2727307 1 1 <?php return array( 2 2 'root' => array( 3 'pretty_version' => '1.0. 5',4 'version' => '1.0. 5.0',3 'pretty_version' => '1.0.6', 4 'version' => '1.0.6.0', 5 5 'type' => 'library', 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' b06b539f0dd04cd7e2cc52cd786e8fe3f85a5c90',8 'reference' => '563711b1554200c60d00b8d67d22e8256cf0dd7f', 9 9 'name' => 'hamworks/schedule-terms', 10 10 'dev' => false, … … 12 12 'versions' => array( 13 13 'hamworks/schedule-terms' => array( 14 'pretty_version' => '1.0. 5',15 'version' => '1.0. 5.0',14 'pretty_version' => '1.0.6', 15 'version' => '1.0.6.0', 16 16 'type' => 'library', 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => ' b06b539f0dd04cd7e2cc52cd786e8fe3f85a5c90',19 'reference' => '563711b1554200c60d00b8d67d22e8256cf0dd7f', 20 20 'dev_requirement' => false, 21 21 ), -
schedule-terms/trunk/build/editor.asset.php
r2727088 r2727307 1 <?php return array('dependencies' => array('moment', 'wp-components', 'wp-core-data', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => ' 9027589ef94f28d15116b2c1f812c571');1 <?php return array('dependencies' => array('moment', 'wp-components', 'wp-core-data', 'wp-data', 'wp-date', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins'), 'version' => 'adc00d5a0f4b33a08cf7e8b839bf3064'); -
schedule-terms/trunk/build/editor.js
r2727088 r2727307 1 !function(){"use strict";var e={n:function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,n=window.wp.plugins,r=window.wp.data,o=window.wp.coreData,l=window.wp.editor,a=window.wp.editPost,s=window.wp.i18n,i=window.wp.components, u=window.wp.date,m=window.moment,c=e.n(m);const d="YYYY-MM-DDTHH:mm:ss",p=e=>{let{term:n,taxonomy:r,label:l,postType:a,type:m}=e;const[p,g]=(0,o.useEntityProp)("postType",a,"meta"),f=(0,t.useRef)(),w=(0,u.__experimentalGetSettings)(),[y=w.formats.date]=(0,o.useEntityProp)("root","site","date_format"),[h=w.formats.time]=(0,o.useEntityProp)("root","site","time_format"),v=()=>{const{timezone:e}=w,[t,n]=e.offset.toString().split(".");return`${Number(t)>0?"+":"-"}${String(Math.abs(t)).padStart(2,"0")}:${String(Math.floor(60*Number(`0.${n||0}`))).padStart(2,"0")}`},_=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;const r=null==p||null===(e=p.schedule_terms)||void 0===e?void 0:e.find((e=>e.term===n&&e.type===m));if(null!=r&&r.datetime)return c()(r.datetime).utcOffset(v()).format(t)}();return(0,t.createElement)(i.PanelRow,{ref:f},(0,t.createElement)("span",null,l),(0,t.createElement)(i.Dropdown,{popoverProps:{anchorRef:f.current},position:"bottom left",renderToggle:e=>{let{onToggle:n,isOpen:r}=e;return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(i.Button,{onClick:n,"aria-expanded":r,variant:"tertiary"},_?(0,u.dateI18n)(`${y} ${h}`,_):(0,s.__)("none","schedule-terms")))},renderContent:()=>(0,t.createElement)("div",null,(0,t.createElement)(i.DateTimePicker,{currentDate:_,onChange:e=>(e=>{var t;const o=(null==p||null===(t=p.schedule_terms)||void 0===t?void 0:t.filter((e=>!(e.term===n&&e.type===m))))||[];g({...p,schedule_terms:[...o,e?{term:n,taxonomy:r,type:m,datetime:c()(`${e}${v()}`).utc().format()}:null].filter((e=>null!==e))})})(e)}))}))},g=e=>{let{taxonomies:n,terms:r,currentPostType:o}=e;return(0,t.createElement)("div",null,null==n?void 0:n.map((e=>{var n;return(0,t.createElement)("div",{key:e.slug},r[e.slug]&&r[e.slug].length>0&&(null===(n=r[e.slug])||void 0===n?void 0:n.map((n=>(0,t.createElement)("div",{key:n.id},(0,t.createElement)("h4",null,e.slug,": ",n.name),(0,t.createElement)(p,{label:(0,s.__)("Attach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"attach",postType:o}),(0,t.createElement)(p,{label:(0,s.__)("Detach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"detach",postType:o}))))))})))};(0,n.registerPlugin)("schedule-terms",{render:()=>{const{postType:e,taxonomies:n,terms:i}=(0,r.useSelect)((e=>{const{getTaxonomies:t,getEntityRecords:n}=e(o.store),r=e(l.store).getCurrentPostType(),a=(t({per_page:-1})||[]).filter((e=>e.types.includes(r))),s=Object.fromEntries(a.map((e=>{var t;const r=null===(t=n("taxonomy",e.slug,{per_page:-1}))||void 0===t?void 0:t.filter((e=>{let{meta:{schedule_terms_active:t}}=e;return t}));return[e.slug,r]})));return{postType:r,taxonomies:a,terms:s}}));return(0,t.createElement)(a.PluginDocumentSettingPanel,{name:"schedule-terms",title:(0,s.__)("Schedule Terms","schedule-terms"),className:"schedule-terms"},(0,t.createElement)(g,{currentPostType:e,taxonomies:n,terms:i}))},icon:"clock"})}();1 !function(){"use strict";var e={n:function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,{a:n}),n},d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,n=window.wp.plugins,r=window.wp.data,o=window.wp.coreData,l=window.wp.editor,a=window.wp.editPost,s=window.wp.i18n,i=window.wp.components,m=window.wp.date,u=window.moment,c=e.n(u);const d="YYYY-MM-DDTHH:mm:ss",p=e=>{let{term:n,taxonomy:r,label:l,postType:a,type:u}=e;const[p,g]=(0,o.useEntityProp)("postType",a,"meta"),y=(0,t.useRef)(),f=(0,m.__experimentalGetSettings)(),[w=f.formats.date]=(0,o.useEntityProp)("root","site","date_format"),[h=f.formats.time]=(0,o.useEntityProp)("root","site","time_format"),v=()=>{const{timezone:e}=f,[t,n]=e.offset.toString().split(".");return`${Number(t)>0?"+":"-"}${String(Math.abs(t)).padStart(2,"0")}:${String(Math.floor(60*Number(`0.${n||0}`))).padStart(2,"0")}`},_=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;const o=null==p||null===(e=p.schedule_terms)||void 0===e?void 0:e.find((e=>e.term===n&&e.type===u&&e.taxonomy===r));if(null!=o&&o.datetime)return c()(o.datetime).utcOffset(v()).format(t)}();return(0,t.createElement)(i.PanelRow,{ref:y},(0,t.createElement)("span",null,l),(0,t.createElement)(i.Dropdown,{popoverProps:{anchorRef:y.current},position:"bottom left",renderToggle:e=>{let{onToggle:n,isOpen:r}=e;return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(i.Button,{onClick:n,"aria-expanded":r,variant:"tertiary"},_?(0,m.dateI18n)(`${w} ${h}`,_):(0,s.__)("none","schedule-terms")))},renderContent:()=>(0,t.createElement)("div",null,(0,t.createElement)(i.DateTimePicker,{currentDate:_,onChange:e=>(e=>{var t;const o=(null==p||null===(t=p.schedule_terms)||void 0===t?void 0:t.filter((e=>!(e.term===n&&e.type===u&&e.taxonomy===r))))||[];g({...p,schedule_terms:[...o,e?{term:n,taxonomy:r,type:u,datetime:c()(`${e}${v()}`).utc().format()}:null].filter((e=>null!==e))})})(e)}))}))},g=e=>{let{taxonomies:n,terms:r,currentPostType:o}=e;return(0,t.createElement)("div",null,null==n?void 0:n.map((e=>{var n;return(0,t.createElement)("div",{key:e.slug},r[e.slug]&&r[e.slug].length>0&&(null===(n=r[e.slug])||void 0===n?void 0:n.map((n=>(0,t.createElement)("div",{key:n.id},(0,t.createElement)("h4",null,e.name,": ",n.name),(0,t.createElement)(p,{label:(0,s.__)("Attach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"attach",postType:o}),(0,t.createElement)(p,{label:(0,s.__)("Detach","schedule-terms"),term:n.slug,taxonomy:e.slug,type:"detach",postType:o}))))))})))};(0,n.registerPlugin)("schedule-terms",{render:()=>{const{postType:e,taxonomies:n,terms:i}=(0,r.useSelect)((e=>{const{getTaxonomies:t,getEntityRecords:n}=e(o.store),r=e(l.store).getCurrentPostType(),a=(t({per_page:-1})||[]).filter((e=>e.types.includes(r))),s=Object.fromEntries(a.map((e=>{var t;const r=null===(t=n("taxonomy",e.slug,{per_page:-1}))||void 0===t?void 0:t.filter((e=>{let{meta:{schedule_terms_active:t}}=e;return t}));return[e.slug,r]})));return{postType:r,taxonomies:a,terms:s}}));return(0,t.createElement)(a.PluginDocumentSettingPanel,{name:"schedule-terms",title:(0,s.__)("Schedule Terms","schedule-terms"),className:"schedule-terms"},(0,t.createElement)(g,{currentPostType:e,taxonomies:n,terms:i}))},icon:"clock"})}(); -
schedule-terms/trunk/includes/Term/UI.php
r2727069 r2727307 105 105 add_action( "wp_ajax_{$this->meta_key}_terms", array( $this, 'ajax_update' ) ); 106 106 107 add_filter( 'terms_clauses', array( $this, 'terms_clauses' ), 10, 3 );108 add_filter( 'get_terms_orderby', array( $this, 'get_terms_orderby' ), 10, 3 );109 110 107 foreach ( $this->taxonomies as $value ) { 111 108 … … 114 111 add_filter( "manage_edit-{$value}_columns", array( $this, 'add_column_header' ) ); 115 112 add_filter( "manage_{$value}_custom_column", array( $this, 'add_column_value' ), 10, 3 ); 116 add_filter( "manage_edit-{$value}_sortable_columns", array( $this, 'sortable_columns' ) );117 113 } 118 114 … … 144 140 add_action( 'quick_edit_custom_box', array( $this, 'quick_edit_meta' ), 10, 3 ); 145 141 } 146 }147 148 /** Get Terms *************************************************************/149 150 /**151 * Filter `get_terms_orderby` and tweak for meta_query orderby's.152 *153 * @param string $orderby `ORDERBY` clause of the terms query.154 * @param array $args An array of term query arguments.155 * @param string[] $taxonomies An array of taxonomy names.156 *157 * @return string158 */159 public function get_terms_orderby( string $orderby = '', array $args = array(), array $taxonomies = array() ): string {160 161 // Bail if not a target taxonomy.162 if ( ! $this->is_taxonomy( $taxonomies ) ) {163 return $orderby;164 }165 166 // Ordering by meta key.167 if ( filter_input( INPUT_GET, 'orderby', FILTER_SANITIZE_STRING ) === $this->meta_key ) {168 $orderby = 'meta_value';169 }170 171 return $orderby;172 }173 174 /**175 * Filter get_terms() and maybe add `meta_query`176 *177 * @param string[] $clauses Array of query SQL clauses.178 * @param string[] $taxonomies An array of taxonomy names.179 * @param array $args An array of term query arguments.180 *181 * @return string[]182 */183 public function terms_clauses( array $clauses = array(), array $taxonomies = array(), array $args = array() ): array {184 global $wpdb;185 186 if ( ! $this->is_taxonomy( $taxonomies ) ) {187 return $clauses;188 }189 190 // Default allowed keys & primary key.191 $allowed_keys = array( $this->meta_key );192 193 // Set allowed keys.194 $allowed_keys[] = 'meta_value';195 $allowed_keys[] = 'meta_value_num';196 197 // Tweak orderby.198 $orderby = $args['orderby'] ?? '';199 200 // Bail if no orderby or allowed_keys.201 if ( ! in_array( $orderby, $allowed_keys, true ) ) {202 return $clauses;203 }204 205 // Join term meta data.206 $clauses['join'] .= " INNER JOIN $wpdb->termmeta AS tm ON t.term_id = tm.term_id";207 208 // Maybe order by term meta.209 switch ( $args['orderby'] ) {210 case $this->meta_key:211 case 'meta_value':212 if ( ! empty( $this->key_type ) ) {213 $clauses['orderby'] = 'ORDER BY CAST(tm.meta_value AS tm)';214 } else {215 $clauses['orderby'] = 'ORDER BY tm.meta_value';216 }217 $clauses['fields'] .= ', tm.*';218 $clauses['where'] .= " AND tm.meta_key = '$this->meta_key'";219 break;220 case 'meta_value_num':221 $clauses['orderby'] = 'ORDER BY tm.meta_value+0';222 $clauses['fields'] .= ', tm.*';223 $clauses['where'] .= " AND tm.meta_key = '$this->meta_key'";224 break;225 }226 227 // Return maybe modified clauses.228 return $clauses;229 142 } 230 143 … … 341 254 } 342 255 343 /**344 * Allow sorting by this `meta_key`345 *346 * @param string[] $columns columns.347 *348 * @return string[]349 * @since 2.0.0350 */351 public function sortable_columns( array $columns = array() ): array {352 // phpcs:ignore353 $columns[ $this->meta_key ] = $this->meta_key;354 355 return $columns;356 }357 256 358 257 /** -
schedule-terms/trunk/readme.txt
r2727106 r2727307 7 7 Tested up to: 5.9 8 8 Requires PHP: 7.3 9 Stable tag: 1.0. 59 Stable tag: 1.0.6 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html -
schedule-terms/trunk/schedule-terms.php
r2727106 r2727307 10 10 * Text Domain: schedule-terms 11 11 * Domain Path: /languages 12 * Version: 1.0. 512 * Version: 1.0.6 13 13 * 14 14 * @package Schedule_Terms -
schedule-terms/trunk/src/editor/components/DatetimeControl.tsx
r2727088 r2727307 81 81 const otherItems = meta?.schedule_terms?.filter( ( item ) => { 82 82 return !( 83 item.term === term && item.type === type 83 item.term === term && item.type === type && item.taxonomy === taxonomy 84 84 ); 85 85 } ) || []; … … 107 107 const getDatetime = ( format = TIMEZONELESS_FORMAT ) => { 108 108 const val = meta?.schedule_terms?.find( ( item ) => { 109 return item.term === term && item.type === type ;109 return item.term === term && item.type === type && item.taxonomy === taxonomy; 110 110 } ); 111 111 -
schedule-terms/trunk/src/editor/index.tsx
r2727069 r2727307 24 24 interface Taxonomy { 25 25 slug: string; 26 name: string; 27 description: string; 26 28 } 27 29 … … 42 44 <div key={ term.id }> 43 45 <h4> 44 { taxonomy. slug}: { term.name }46 { taxonomy.name }: { term.name } 45 47 </h4> 46 48 <DatetimeControl -
schedule-terms/trunk/vendor/autoload.php
r2727106 r2727307 10 10 require_once __DIR__ . '/composer/autoload_real.php'; 11 11 12 return ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c::getLoader();12 return ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2::getLoader(); -
schedule-terms/trunk/vendor/composer/autoload_real.php
r2727106 r2727307 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c5 class ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit 0c63a2f1a92d145f38bf16e4a500e84c', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit3ec1cecb83e54af786b71a28bfc07ff2', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::getInitializer($loader)); 33 33 34 34 $loader->register(true); 35 35 36 $includeFiles = \Composer\Autoload\ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$files;36 $includeFiles = \Composer\Autoload\ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$files; 37 37 foreach ($includeFiles as $fileIdentifier => $file) { 38 composerRequire 0c63a2f1a92d145f38bf16e4a500e84c($fileIdentifier, $file);38 composerRequire3ec1cecb83e54af786b71a28bfc07ff2($fileIdentifier, $file); 39 39 } 40 40 … … 48 48 * @return void 49 49 */ 50 function composerRequire 0c63a2f1a92d145f38bf16e4a500e84c($fileIdentifier, $file)50 function composerRequire3ec1cecb83e54af786b71a28bfc07ff2($fileIdentifier, $file) 51 51 { 52 52 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
schedule-terms/trunk/vendor/composer/autoload_static.php
r2727106 r2727307 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c7 class ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2 8 8 { 9 9 public static $files = array ( … … 180 180 { 181 181 return \Closure::bind(function () use ($loader) { 182 $loader->prefixLengthsPsr4 = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$prefixLengthsPsr4;183 $loader->prefixDirsPsr4 = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$prefixDirsPsr4;184 $loader->classMap = ComposerStaticInit 0c63a2f1a92d145f38bf16e4a500e84c::$classMap;182 $loader->prefixLengthsPsr4 = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$prefixLengthsPsr4; 183 $loader->prefixDirsPsr4 = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$prefixDirsPsr4; 184 $loader->classMap = ComposerStaticInit3ec1cecb83e54af786b71a28bfc07ff2::$classMap; 185 185 186 186 }, null, ClassLoader::class); -
schedule-terms/trunk/vendor/composer/installed.php
r2727106 r2727307 1 1 <?php return array( 2 2 'root' => array( 3 'pretty_version' => '1.0. 5',4 'version' => '1.0. 5.0',3 'pretty_version' => '1.0.6', 4 'version' => '1.0.6.0', 5 5 'type' => 'library', 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' b06b539f0dd04cd7e2cc52cd786e8fe3f85a5c90',8 'reference' => '563711b1554200c60d00b8d67d22e8256cf0dd7f', 9 9 'name' => 'hamworks/schedule-terms', 10 10 'dev' => false, … … 12 12 'versions' => array( 13 13 'hamworks/schedule-terms' => array( 14 'pretty_version' => '1.0. 5',15 'version' => '1.0. 5.0',14 'pretty_version' => '1.0.6', 15 'version' => '1.0.6.0', 16 16 'type' => 'library', 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => ' b06b539f0dd04cd7e2cc52cd786e8fe3f85a5c90',19 'reference' => '563711b1554200c60d00b8d67d22e8256cf0dd7f', 20 20 'dev_requirement' => false, 21 21 ),
Note: See TracChangeset
for help on using the changeset viewer.