├── bootstrap ├── index.php └── upgrade.php ├── inc ├── traits │ ├── index.php │ ├── manager │ │ └── index.php │ ├── core │ │ └── index.php │ ├── factory │ │ └── index.php │ └── extension │ │ └── index.php ├── classes │ ├── index.php │ ├── abstract │ │ └── index.php │ ├── loadfront.class.php │ └── alias.class.php ├── compat │ └── index.php ├── index.php └── functions │ └── index.php ├── extensions ├── essentials │ ├── cord │ │ ├── trunk │ │ │ ├── lib │ │ │ │ ├── images │ │ │ │ │ ├── index.php │ │ │ │ │ ├── icon-29x29px.png │ │ │ │ │ ├── icon-58x58px.png │ │ │ │ │ └── icon.svg │ │ │ │ └── index.php │ │ │ ├── inc │ │ │ │ ├── classes │ │ │ │ │ ├── index.php │ │ │ │ │ └── core.class.php │ │ │ │ └── index.php │ │ │ ├── index.php │ │ │ ├── test.json │ │ │ └── cord.php │ │ └── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ ├── articles │ │ ├── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ │ └── trunk │ │ │ ├── inc │ │ │ ├── classes │ │ │ │ └── index.php │ │ │ └── index.php │ │ │ ├── views │ │ │ ├── inpost │ │ │ │ ├── index.php │ │ │ │ └── inpost.php │ │ │ ├── index.php │ │ │ ├── sitemap │ │ │ │ ├── index.php │ │ │ │ └── news.php │ │ │ └── list │ │ │ │ ├── index.php │ │ │ │ ├── quickedit.php │ │ │ │ └── bulkedit.php │ │ │ ├── index.php │ │ │ ├── lib │ │ │ ├── images │ │ │ │ ├── index.php │ │ │ │ └── icon.svg │ │ │ └── index.php │ │ │ ├── test.json │ │ │ └── articles.php │ ├── honeypot │ │ ├── trunk │ │ │ ├── inc │ │ │ │ ├── classes │ │ │ │ │ └── index.php │ │ │ │ └── index.php │ │ │ ├── index.php │ │ │ ├── js.min.js │ │ │ ├── timer.min.js │ │ │ ├── js.js │ │ │ ├── honeypot.php │ │ │ └── timer.js │ │ └── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ └── focus │ │ ├── trunk │ │ ├── inc │ │ │ ├── index.php │ │ │ └── classes │ │ │ │ ├── index.php │ │ │ │ └── core.class.php │ │ ├── index.php │ │ ├── views │ │ │ ├── index.php │ │ │ └── inpost │ │ │ │ ├── index.php │ │ │ │ ├── js-templates.php │ │ │ │ └── score-template.php │ │ ├── lib │ │ │ ├── css │ │ │ │ └── index.php │ │ │ ├── js │ │ │ │ ├── index.php │ │ │ │ └── tsfem-focus-parser.worker.min.js │ │ │ └── index.php │ │ ├── test.json │ │ └── focus.php │ │ └── assets │ │ ├── index.php │ │ └── icon.svg ├── free │ ├── transport │ │ ├── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ │ └── trunk │ │ │ ├── inc │ │ │ ├── classes │ │ │ │ ├── logger │ │ │ │ │ ├── index.php │ │ │ │ │ └── store.class.php │ │ │ │ ├── importers │ │ │ │ │ ├── termmeta │ │ │ │ │ │ └── index.php │ │ │ │ │ ├── index.php │ │ │ │ │ └── postmeta │ │ │ │ │ │ ├── index.php │ │ │ │ │ │ └── base.class.php │ │ │ │ ├── transformers │ │ │ │ │ └── index.php │ │ │ │ └── index.php │ │ │ └── index.php │ │ │ ├── views │ │ │ ├── index.php │ │ │ └── layout │ │ │ │ ├── general │ │ │ │ ├── index.php │ │ │ │ ├── footer.php │ │ │ │ └── top.php │ │ │ │ ├── panes │ │ │ │ ├── index.php │ │ │ │ └── logger.php │ │ │ │ ├── pages │ │ │ │ ├── index.php │ │ │ │ └── transport.php │ │ │ │ └── index.php │ │ │ ├── lib │ │ │ ├── images │ │ │ │ ├── index.php │ │ │ │ └── icon.svg │ │ │ ├── index.php │ │ │ └── js │ │ │ │ ├── index.php │ │ │ │ └── sse.worker.min.js │ │ │ ├── test.json │ │ │ ├── index.php │ │ │ └── transport.php │ ├── origin │ │ ├── trunk │ │ │ ├── index.php │ │ │ ├── readme.md │ │ │ └── origin.php │ │ └── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ ├── amp │ │ ├── trunk │ │ │ ├── index.php │ │ │ ├── inc │ │ │ │ ├── index.php │ │ │ │ └── classes │ │ │ │ │ └── index.php │ │ │ └── amp.php │ │ └── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ ├── title-fix │ │ ├── trunk │ │ │ ├── inc │ │ │ │ ├── classes │ │ │ │ │ └── index.php │ │ │ │ └── index.php │ │ │ ├── index.php │ │ │ └── title-fix.php │ │ └── assets │ │ │ ├── index.php │ │ │ └── icon.svg │ └── incognito │ │ ├── assets │ │ ├── index.php │ │ └── icon.svg │ │ └── trunk │ │ ├── index.php │ │ ├── incognito.php │ │ └── readme.md └── premium │ ├── local │ ├── trunk │ │ ├── index.php │ │ ├── views │ │ │ ├── index.php │ │ │ └── layout │ │ │ │ ├── pages │ │ │ │ ├── index.php │ │ │ │ ├── local.php │ │ │ │ └── settings.php │ │ │ │ ├── general │ │ │ │ ├── index.php │ │ │ │ ├── footer.php │ │ │ │ └── top.php │ │ │ │ └── index.php │ │ ├── inc │ │ │ ├── index.php │ │ │ ├── classes │ │ │ │ ├── index.php │ │ │ │ └── core.class.php │ │ │ └── traits │ │ │ │ └── index.php │ │ ├── test.json │ │ ├── lib │ │ │ ├── images │ │ │ │ ├── icon-29x29px.png │ │ │ │ ├── icon-58x58px.png │ │ │ │ ├── index.php │ │ │ │ └── icon.svg │ │ │ ├── schema │ │ │ │ └── index.php │ │ │ ├── index.php │ │ │ └── js │ │ │ │ ├── index.php │ │ │ │ └── tsfem-local.min.js │ │ └── upgrade.php │ └── assets │ │ ├── index.php │ │ └── icon.svg │ └── monitor │ ├── trunk │ ├── views │ │ ├── forms │ │ │ ├── index.php │ │ │ └── connect.php │ │ ├── layout │ │ │ ├── general │ │ │ │ ├── index.php │ │ │ │ ├── footer.php │ │ │ │ └── top.php │ │ │ ├── pages │ │ │ │ ├── index.php │ │ │ │ ├── monitor.php │ │ │ │ └── connect.php │ │ │ └── index.php │ │ └── index.php │ ├── index.php │ ├── inc │ │ ├── index.php │ │ └── classes │ │ │ ├── index.php │ │ │ └── front.class.php │ ├── lib │ │ ├── images │ │ │ ├── icon-29x29px.png │ │ │ ├── icon-58x58px.png │ │ │ ├── index.php │ │ │ └── icon.svg │ │ ├── css │ │ │ └── index.php │ │ ├── index.php │ │ └── js │ │ │ └── index.php │ ├── test.json │ └── monitor.php │ └── assets │ ├── index.php │ └── icon.svg ├── index.php ├── views ├── layout │ ├── extension │ │ ├── index.php │ │ ├── footer.php │ │ ├── top.php │ │ ├── content.php │ │ └── pane.php │ ├── index.php │ ├── pages │ │ ├── index.php │ │ └── extensions.php │ └── general │ │ ├── index.php │ │ ├── footer.php │ │ ├── top.php │ │ └── pane.php ├── forms │ ├── index.php │ ├── free.php │ ├── get.php │ └── key.php ├── template │ ├── index.php │ ├── fbtopnotice.php │ └── inpostnotice.php ├── index.php └── listedit │ ├── index.php │ ├── bulk.php │ └── quick.php ├── lib ├── fonts │ └── index.php ├── js │ ├── index.php │ ├── tsfem-worker.min.js │ ├── tsfem-listedit.min.js │ ├── tsfem.min.js │ ├── tsfem-manager.min.js │ └── tsfinstaller.min.js ├── index.php ├── css │ ├── index.php │ ├── tsfem-inpost.min.css │ ├── tsfem-inpost.css │ └── tsfem-manager.min.css └── images │ ├── index.php │ ├── tsflogo.svg │ └── exticon-fallback.svg ├── language └── index.php ├── security.txt └── the-seo-framework-extension-manager.php /bootstrap/index.php: -------------------------------------------------------------------------------- 1 | {let b=document.getElementById(a.i),c=document.getElementById(a.w);b&&c&&(b.value="",c.style.display="none")})($php_values); 2 | -------------------------------------------------------------------------------- /extensions/premium/local/trunk/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "slug" : "local", 3 | "namespace" : "\\TSF_Extension_Manager\\Extension\\Local", 4 | "test" : { 5 | "_base" : "local.php" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /views/layout/index.php: -------------------------------------------------------------------------------- 1 | {let b,c,d=document.getElementsByName(a.n)[0],e=255*(1-Math.random()),f=f=>{void 0===b&&(b=f),c=f-b,c<1e3*(+a.t/+a.s)?(d.value=+a.t+e-c/1e3,g()):d.value=""},g=()=>setTimeout(()=>requestAnimationFrame(f),100+200*Math.random());d&&(d.value=+a.t+e,g())})($php_values); 2 | -------------------------------------------------------------------------------- /extensions/essentials/articles/trunk/views/list/index.php: -------------------------------------------------------------------------------- 1 | {"busy"===c?b.set(a,!0):b.set(a,!1)},d=a=>c(a,"clear"),e=b=>a.get(b),f=a=>{e(a)?.terminate(),d(a)};return Object.assign({load:()=>{}},{occupyWorker:a=>c(a,"busy"),freeWorker:d,isWorkerBusy:a=>!!b.get(a),spawnWorker:(b,c)=>a.set(c,new Worker(b)),getWorker:e,stopWorker:f,despawnWorker:b=>{f(b),a.delete(b)},tellWorker:(a,b)=>new Promise((c,d)=>{const f=e(a);return f?void(f.onmessage=a=>"error"in a.data?d(a.data.error):c(a.data),f.onerror=a=>d(a),f.postMessage({id:a,data:b})):d("No worker available.")}),assignWorker:(a,b,c,d)=>{const f=e(a);return f?void(f.onmessage=c,f.onerror=d,f.postMessage({id:a,data:b})):d("No worker available.")}})}(),window.tsfem_worker.load(); 2 | -------------------------------------------------------------------------------- /extensions/premium/local/trunk/lib/js/index.php: -------------------------------------------------------------------------------- 1 | _verify_include_secret( $_secret ) or die; 10 | 11 | /** 12 | * Because positivity. 13 | */ 14 | $mottos = [ 15 | 'automated', 16 | 'open', 17 | 'orderly', 18 | 'elegant', 19 | 'agile', 20 | ]; 21 | 22 | $motto_key = mt_rand( 0, count( $mottos ) - 1 ); 23 | $motto = "An {$mottos[ $motto_key ]} Future"; 24 | 25 | ?> 26 | 29 | 32 | 19 |
20 | 21 |
22 | 25 |
26 |
27 | 19 |
20 | 21 |
22 | 25 |
26 |
27 | _verify_include_secret( $_secret ) or die; 10 | 11 | /** 12 | * Because positivity. 13 | */ 14 | $mottos = [ 15 | 'simple', 16 | 'prospective', 17 | 'thorough', 18 | 'prolonged', 19 | 'magnified', 20 | ]; 21 | 22 | $motto_key = mt_rand( 0, count( $mottos ) - 1 ); 23 | $motto = "A {$mottos[ $motto_key ]} Solution"; 24 | 25 | ?> 26 | 29 | 32 | _verify_include_secret( $_secret ) or die; 10 | 11 | /** 12 | * Because positivity. 13 | */ 14 | $mottos = [ 15 | 'centered', 16 | 'complete', 17 | 'conscientious', 18 | 'focussed', 19 | 'diligent', 20 | ]; 21 | 22 | $motto_key = mt_rand( 0, count( $mottos ) - 1 ); 23 | $motto = 'A ' . $mottos[ $motto_key ] . ' Solution'; 24 | 25 | ?> 26 | 29 | 32 | _verify_include_secret( $_secret ) or die; 10 | 11 | tsfem()->_do_pane_wrap_callable( 12 | __( 'Local Settings', 'the-seo-framework-extension-manager' ), 13 | [ $this, '_local_settings_overview' ], 14 | [ 15 | 'full' => true, 16 | 'collapse' => false, 17 | 'move' => false, 18 | 'pane_id' => 'tsfem-e-local-settings-pane', 19 | 'ajax' => true, 20 | 'ajax_id' => 'tsfem-e-local-settings-ajax', 21 | 'secure_obj' => true, 22 | 'footer' => [ $this, '_get_local_settings_bottom_wrap' ], 23 | ] 24 | ); 25 | -------------------------------------------------------------------------------- /extensions/free/transport/trunk/views/layout/panes/logger.php: -------------------------------------------------------------------------------- 1 | _verify_include_secret( $_secret ) or die; 10 | 11 | ?> 12 |
13 |
14 |
15 |
16 |
17 | 18 |
19 |
20 | -------------------------------------------------------------------------------- /extensions/free/transport/trunk/views/layout/general/top.php: -------------------------------------------------------------------------------- 1 | _verify_include_secret( $_secret ) or die; 10 | 11 | ?> 12 |
13 |

14 | %sTransport βeta', 18 | sprintf( 19 | '%2$s', 20 | esc_attr( $size ), 21 | sprintf( 22 | '', 23 | esc_url( \TSFEM_E_TRANSPORT_DIR_URL . 'lib/images/icon.svg', [ 'https', 'http' ] ), 24 | esc_attr( $size ) 25 | ) 26 | ) 27 | ); 28 | ?> 29 |

30 |
31 | _verify_include_secret( $_secret ) or die; 10 | 11 | $class = 'tsfem-button-primary tsfem-button-cloud'; 12 | $name = __( 'Register', 'the-seo-framework-extension-manager' ); 13 | $title = __( 'Connect this website to SEO Monitor', 'the-seo-framework-extension-manager' ); 14 | 15 | $nonce_action = $this->_get_nonce_action_field( 'connect' ); 16 | $nonce = $this->_get_nonce_field( 'connect' ); 17 | $submit = $this->_get_submit_button( $name, $title, $class ); 18 | 19 | $args = [ 20 | 'id' => 'tsfem-e-monitor-connect-form', 21 | 'input' => compact( 'nonce_action', 'nonce', 'submit' ), 22 | ]; 23 | 24 | $this->_action_button( menu_page_url( $this->monitor_page_slug, false ), $args ); 25 | -------------------------------------------------------------------------------- /views/layout/pages/extensions.php: -------------------------------------------------------------------------------- 1 | _verify_instance( $_instance, $bits[1] ) or die; 10 | 11 | $this->_do_pane_wrap( 12 | __( 'Extensions', 'the-seo-framework-extension-manager' ), 13 | $this->get_extension_overview(), 14 | [ 15 | 'full' => true, 16 | 'collapse' => false, 17 | 'move' => false, 18 | 'pane_id' => 'tsfem-extensions-pane', 19 | 'ajax' => true, 20 | 'ajax_id' => 'tsfem-extensions-ajax', 21 | ] 22 | ); 23 | $this->_do_pane_wrap( 24 | __( 'Account and Actions', 'the-seo-framework-extension-manager' ), 25 | $this->get_extensions_actions_overview(), 26 | [ 27 | 'full' => false, 28 | 'collapse' => true, 29 | 'move' => true, 30 | 'pane_id' => 'tsfem-actions-pane', 31 | 'ajax' => true, 32 | 'ajax_id' => 'tsfem-actions-ajax', 33 | ] 34 | ); 35 | -------------------------------------------------------------------------------- /extensions/premium/monitor/trunk/views/layout/general/top.php: -------------------------------------------------------------------------------- 1 | _verify_include_secret( $_secret ) or die; 10 | 11 | $about = ''; 12 | $actions = ''; 13 | 14 | ?> 15 |
16 |

17 | %sMonitor', 21 | sprintf( 22 | '%2$s', 23 | esc_attr( $size ), 24 | sprintf( 25 | '', 26 | esc_url( \TSFEM_E_MONITOR_DIR_URL . 'lib/images/icon.svg', [ 'https', 'http' ] ), 27 | esc_attr( $size ) 28 | ) 29 | ) 30 | ); 31 | ?> 32 |

33 |
34 | 20 | 23 | 24 | 30 | {let b,c=document.getElementById(`tsfLeData[${a}]`);try{b=JSON.parse(c.dataset.le)||void 0}catch(a){}if(b=b?.tsfem,!b)return;let d,e;for(let c in b)for(let a in b[c])if(d=document.getElementById("tsfem-pm-quick[%1$s][%2$s]".replace("%1$s",c).replace("%2$s",a)),d)if(e=b[c][a],e.isSelect){tsf.selectByValue(d,e.value);let a=d.querySelector("[value=\"0\"]");a&&(a.innerHTML=a.innerHTML.replace("%s",tsf.decodeEntities(e.default)))}else d.value=tsf.decodeEntities(e.value)},c=a=>b(a),d=()=>{let a;window.inlineEditPost&&(a="edit"in window.inlineEditPost&&window.inlineEditPost.edit,a&&(window.inlineEditPost.edit=function(c){let d=a.apply(this,arguments);return("object"==typeof c&&(c=window.inlineEditPost.getId(c)),!c)?d:(b(c),d)})),window.inlineEditTax&&(a="edit"in window.inlineEditTax&&window.inlineEditTax.edit,a&&(window.inlineEditTax.edit=function(b){let d=a.apply(this,arguments);return("object"==typeof b&&(b=window.inlineEditTax.getId(b)),!b)?d:(c(b),d)}))};return Object.assign({load:()=>{document.body.addEventListener("tsf-onload",d)}},{},{l10n:a})}(),window.tsfem_listedit.load(); 2 | -------------------------------------------------------------------------------- /views/forms/free.php: -------------------------------------------------------------------------------- 1 | _verify_instance( $_instance, $bits[1] ) or die; 10 | 11 | $class_form = isset( $classes_form ) && count( $classes_form ) > 0 ? implode( ' ', $classes_form ) : ''; 12 | $class_submit = isset( $classes ) && count( $classes ) > 0 ? implode( ' ', $classes ) : 'tsfem-button tsfem-button-secondary'; 13 | 14 | ?> 15 |
16 | _nonce_action_field( $this->request_name['activate-free'] ); ?> 17 | nonce_action['activate-free'], $this->nonce_name ); ?> 18 | 19 |
20 | 34 | 37 | 40 | _verify_include_secret( $_secret ) or die; 10 | 11 | $tsfem = tsfem(); 12 | 13 | $tsfem->_do_pane_wrap( 14 | __( 'Common Issues', 'the-seo-framework-extension-manager' ), 15 | $this->get_issues_overview(), 16 | [ 17 | 'full' => false, 18 | 'collapse' => true, 19 | 'wide' => true, 20 | 'move' => false, 21 | 'push' => true, 22 | 'pane_id' => 'tsfem-e-monitor-issues-pane', 23 | 'ajax' => true, 24 | 'ajax_id' => 'tsfem-e-monitor-issues-ajax', 25 | ] 26 | ); 27 | $tsfem->_do_pane_wrap( 28 | __( 'Control Panel', 'the-seo-framework-extension-manager' ), 29 | $this->get_cp_overview(), 30 | [ 31 | 'full' => false, 32 | 'collapse' => true, 33 | 'move' => false, 34 | 'pane_id' => 'tsfem-e-monitor-cp-pane', 35 | 'ajax' => true, 36 | 'ajax_id' => 'tsfem-e-monitor-cp-ajax', 37 | ] 38 | ); 39 | -------------------------------------------------------------------------------- /extensions/premium/local/trunk/views/layout/general/top.php: -------------------------------------------------------------------------------- 1 | _verify_include_secret( $_secret ) or die; 10 | 11 | ?> 12 |
13 |

14 | %sLocal', 18 | sprintf( 19 | '%2$s', 20 | esc_attr( $size ), 21 | sprintf( 22 | '', 23 | esc_url( \TSFEM_E_LOCAL_DIR_URL . 'lib/images/icon.svg', [ 'https', 'http' ] ), 24 | esc_attr( $size ) 25 | ) 26 | ) 27 | ); 28 | ?> 29 |

30 |
31 |
get_test_button(), $this->get_form()->_form_button( 'submit', __( 'Save', 'the-seo-framework-extension-manager' ), 'get' ) 34 | ?>
35 | 2 | 3 | 5 | 9 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /extensions/premium/local/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /extensions/premium/local/trunk/lib/images/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /views/layout/extension/top.php: -------------------------------------------------------------------------------- 1 | 12 |
13 |

14 | %s%s', 19 | sprintf( 20 | '%2$s', 21 | esc_attr( $size ), 22 | sprintf( 23 | '', 24 | esc_url( tsfem()->get_image_file_location( 'tsflogo.svg', true ), [ 'https', 'http' ] ), 25 | esc_attr( $size ) 26 | ) 27 | ), 28 | esc_html__( 'Extension Settings', 'the-seo-framework-extension-manager' ) 29 | ); 30 | ?> 31 |

32 |
33 | get_save_all_button(); 38 | ?> 39 | _verify_instance( $_instance, $bits[1] ) or die; 12 | 13 | $class_submit = isset( $classes ) && count( $classes ) > 0 ? implode( ' ', $classes ) : 'tsfem-button-primary'; 14 | $value_redirect = $redirect ?? 'signup'; 15 | 16 | // @TODO nonce? nonce. 17 | exit; // UNSAFE (and unused...) SCRIPT! Needs nonce. 18 | 19 | ?> 20 |
21 | 22 | 23 | 24 | 25 |
26 | _verify_include_secret( $_secret ) or die; 10 | 11 | $tsfem = tsfem(); 12 | 13 | $tsfem->_do_pane_wrap_callable( 14 | __( 'Importer', 'the-seo-framework-extension-manager' ), 15 | [ $this, '_importer_overview' ], 16 | [ 17 | 'full' => false, 18 | 'collapse' => true, 19 | 'wide' => false, 20 | 'move' => false, 21 | 'push' => true, 22 | 'pane_id' => 'tsfem-e-transport-importer-pane', 23 | 'ajax' => true, 24 | 'ajax_id' => 'tsfem-e-transport-importer-ajax', 25 | ] 26 | ); 27 | $tsfem->_do_pane_wrap_callable( 28 | __( 'Logger', 'the-seo-framework-extension-manager' ), 29 | [ $this, '_logger_overview' ], 30 | [ 31 | 'full' => true, 32 | 'collapse' => true, 33 | 'move' => false, 34 | 'pane_id' => 'tsfem-e-transport-log-pane', 35 | 'ajax' => true, 36 | 'ajax_id' => 'tsfem-e-transport-log-ajax', 37 | 'footer' => [ $this, '_logger_bottom_wrap' ], 38 | ] 39 | ); 40 | -------------------------------------------------------------------------------- /lib/js/tsfem.min.js: -------------------------------------------------------------------------------- 1 | "use strict";window.tsfem=function(a){const b=tsfemL10n.nonce,c=tsfemL10n.insecureNonce,d=tsfemL10n.i18n,e=(b,c,d)=>{let e,f;2===c?(e="tsfem-unknown",f=7500):1===c?(e="tsfem-success",f=2500):(e="tsfem-error",f=1e4);a(b).removeClass("tsfem-loading").addClass(e).text(d?a("").html(d).text():"").fadeOut(d?2*f:f)},f=b=>{a(b).stop(!1,!0).empty().prop("class","tsfem-ajax").show()},g=()=>{};return Object.assign({load:()=>{document.body.addEventListener("tsf-ready",g)}},{nonce:b,insecureNonce:c,i18n:d},{getNodeArray:(a,b)=>{let c=a instanceof Element||a instanceof Document?[a]:[...document.querySelectorAll(Array.isArray(a)?a.join(", "):a)];return b&&(c=c.filter(a=>!a.classList.contains(b))),c},setAjaxLoader:b=>{a(b).toggleClass("tsfem-loading")},unsetAjaxLoader:e,resetAjaxLoader:f,updatedResponse:(a,b,c)=>{0===b||1===b||2===b?e(a,b,c):f(a)},getAjaxError:(a,b,c)=>{tsf.l10n.states.debug&&(void 0);let d="";return d="abort"===c||"timeout"===c?tsfem.i18n.TimeoutError:"Bad Request"===c?tsfem.i18n.BadRequest:"Internal Server Error"===c?tsfem.i18n.FatalError:"parsererror"===c?tsfem.i18n.ParseError:tsfem.i18n.UnknownError,d},matosa:a=>{var b=null,c="";if(function e(a,d){if(d++,"object"==typeof a){let f,g;for(f in a)g=a[f];b=g,c+=1===d?f+e(g,d):`[${f}]${e(g,d)}`}else if(1===d)return b=null,c=!1;return c}(a,0),!1===c)return!1;let d={};return d[c]=b,d}})}(jQuery),window.tsfem.load(); 2 | -------------------------------------------------------------------------------- /extensions/free/incognito/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /inc/classes/loadfront.class.php: -------------------------------------------------------------------------------- 1 | . 25 | */ 26 | 27 | /** 28 | * Facade Class TSF_Extension_Manager\LoadFront. 29 | * 30 | * Initializes plugin classes. 31 | * 32 | * @since 1.0.0 33 | * @access private 34 | * @final 35 | */ 36 | final class LoadFront extends Core { 37 | use Construct_Master_Once_Interface; 38 | 39 | /** 40 | * Constructor, initializes WordPress actions. 41 | * 42 | * @since 1.0.0 43 | */ 44 | private function construct() { } 45 | } 46 | -------------------------------------------------------------------------------- /lib/images/tsflogo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /extensions/essentials/cord/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 15 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /extensions/essentials/cord/trunk/lib/images/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 15 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /lib/images/exticon-fallback.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /views/template/fbtopnotice.php: -------------------------------------------------------------------------------- 1 | format_error_notice( 19 | '{{data.code}}', 20 | [ 21 | 'type' => 'error', 22 | 'message' => '', 23 | ] 24 | ); 25 | 26 | $a11y = true; 27 | $escape = false; 28 | $inline = true; 29 | 30 | ?> 31 | 44 | 57 | $a['priority'] <=> $b['priority'] 17 | ); 18 | 19 | $_tsfem = tsfem(); 20 | 21 | foreach ( $_settings as $index => $params ) { 22 | $_tsfem->_do_pane_wrap_callable( 23 | $params['title'], 24 | [ static::class, '_output_pane_settings' ], 25 | [ 26 | 'logo' => $params['logo'], 27 | 'full' => in_array( 'full', $params['pane'], true ), 28 | 'wide' => in_array( 'wide', $params['pane'], true ), 29 | 'tall' => in_array( 'tall', $params['pane'], true ), 30 | 'collapse' => true, 31 | 'move' => true, 32 | 'pane_id' => "tsfem-extension-settings-pane-$index", 33 | 'ajax' => true, 34 | 'ajax_id' => "tsfem-extension-settings-ajax-$index", 35 | 'footer' => [ static::class, '_output_pane_settings_footer' ], 36 | 'cbargs' => [ $index, $params['settings'] ], 37 | 'fcbargs' => [ $index ], 38 | ] 39 | ); 40 | } 41 | -------------------------------------------------------------------------------- /extensions/free/title-fix/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 14 | 15 | 17 | 19 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /views/layout/extension/pane.php: -------------------------------------------------------------------------------- 1 | 16 |
17 |
18 |
19 |

20 |

21 |
22 |
23 |
24 |
25 | _form_wrap( 'start', menu_page_url( static::$settings_page_slug, false ), true ); 27 | $f->_fields( $settings ); 28 | $f->_form_wrap( 'end' ); 29 | ?> 30 |
31 |
32 |
33 | _blocked_extension_file( $_instance, $bits[1] ) ) return; 11 | 12 | /** 13 | * Monitor extension for The SEO Framework 14 | * Copyright (C) 2016 - 2025 Sybre Waaijer, CyberWire B.V. (https://cyberwire.nl/) 15 | * 16 | * This program is free software: you can redistribute it and/or modify 17 | * it under the terms of the GNU General Public License version 3 as published 18 | * by the Free Software Foundation. 19 | * 20 | * This program is distributed in the hope that it will be useful, 21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 | * GNU General Public License for more details. 24 | * 25 | * You should have received a copy of the GNU General Public License 26 | * along with this program. If not, see . 27 | */ 28 | 29 | /** 30 | * Class TSF_Extension_Manager\Extension\Monitor\Front 31 | * 32 | * Holds extension front-end methods. 33 | * 34 | * @since 1.0.0 35 | * @access private 36 | * @uses TSF_Extension_Manager\Traits 37 | * @final 38 | */ 39 | final class Front { 40 | use \TSF_Extension_Manager\Construct_Master_Once_Final_Interface; 41 | 42 | /** 43 | * @ignore 44 | */ 45 | private function construct() { } 46 | } 47 | -------------------------------------------------------------------------------- /extensions/essentials/honeypot/trunk/js.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file holds Honeypot's code for the JS field. The contents are minified, stored, and outputted via PHP. 3 | * Serve JavaScript as an addition, not as an ends or means. 4 | * 5 | * @author Sybre Waaijer 6 | * @link 7 | */ 8 | 9 | /** 10 | * Honeypot extension for The SEO Framework 11 | * Copyright (C) 2021 - 2025 Sybre Waaijer, CyberWire B.V. (https://cyberwire.nl/) 12 | * 13 | * This program is free software: you can redistribute it and/or modify 14 | * it under the terms of the GNU General Public License version 3 as published 15 | * by the Free Software Foundation. 16 | * 17 | * This program is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with this program. If not, see . 24 | */ 25 | 26 | 'use strict'; 27 | 28 | /** 29 | * @since 2.0.0 30 | * @param {Object} phpValues See method output_timer_honeypot()'s $php_values. 31 | */ 32 | ( phpValues => { 33 | let input = document.getElementById( phpValues.i ), 34 | wrapper = document.getElementById( phpValues.w ); 35 | 36 | if ( input && wrapper ) { 37 | input.value = ''; 38 | wrapper.style.display = 'none'; 39 | } 40 | } )( $php_values ); 41 | -------------------------------------------------------------------------------- /extensions/essentials/articles/trunk/views/list/quickedit.php: -------------------------------------------------------------------------------- 1 | 26 |
27 | 41 |
42 | -------------------------------------------------------------------------------- /extensions/essentials/articles/trunk/views/list/bulkedit.php: -------------------------------------------------------------------------------- 1 | 26 |
27 | 41 |
42 | -------------------------------------------------------------------------------- /views/template/inpostnotice.php: -------------------------------------------------------------------------------- 1 | 24 | 37 | 41 | 54 | _verify_instance( $_instance, $bits[1] ) or die; 10 | 11 | $class_form = isset( $classes_form ) && count( $classes_form ) > 0 ? implode( ' ', $classes_form ) : ''; 12 | $submit_class = isset( $classes ) && count( $classes ) > 0 ? implode( ' ', $classes ) : 'tsfem-button-primary'; 13 | 14 | ?> 15 |
16 | 17 | 18 | _nonce_action_field( $this->request_name['activate-key'] ); ?> 19 | nonce_action['activate-key'], $this->nonce_name ); ?> 20 | 21 |
22 | 2 | 3 | 5 | 9 | 10 | 13 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /extensions/premium/local/trunk/lib/js/tsfem-local.min.js: -------------------------------------------------------------------------------- 1 | "use strict";window.tsfem_e_local={nonce:tsfem_e_localL10n.nonce,i18n:tsfem_e_localL10n.i18n,validateFormJson:a=>{let b,c,d=a.target.getAttribute("form");if(d){if(b=document.getElementById(d),!b)return!1;if(!tsfemForm.doValidityRoutine(b,tsfem_e_local.i18n.fixForm))return!1;c=a.target}else return!1;let e=jQuery(b).closest(".tsfem-pane-wrap").find(".tsfem-pane-header .tsfem-ajax"),f=0,g="";tsfemForm.disableButton(c),tsfem.resetAjaxLoader(e),tsfem.setAjaxLoader(e);let h=window,i="_tsfemMarkupTester",j=window.open("about:blank",i);return jQuery.ajax({method:"POST",url:ajaxurl,dataType:"json",data:{action:"tsfem_e_local_validateFormJson",nonce:tsfem_e_local.nonce,data:jQuery(b).serialize()},processData:!0,timeout:14e3}).done(a=>{a=tsf.convertJSONResponse(a),tsf.l10n.states.debug&&void 0;let b=a?.data,c=a?.type;if(!b||!c)g=tsfem.i18n.InvalidResponse;else{let a=b?.results?.code,c=b?.results?.success;if(!a)g=tsfem.i18n.UnknownError,j.close(),h.focus();else if(!c)tsfem_ui.setTopNotice(a),j.close(),h.focus();else{let a=b.tdata||void 0;if(f=1,g=tsfem_e_local.i18n.testNewWindow,a){let b=jQuery("
",{action:"https://search.google.com/test/rich-results?utm_medium=jsonld",method:"post",target:i});jQuery("