SmartCrawl SEO - Version 2.3

Version Description

  • New: New, exciting, mobile-friendly UI in the admin area
  • New: Support for whitelabel features
  • New: Improved performance and reliability of SEO checkup and sitemap crawler
  • New: Code improvements for the display of meta values
  • New: New filter for addition of extra SEO and readability content
  • New: Yoast importer now less likely to show "No compatible data ..." error
  • New: New BuddyPress settings on Title & Meta page

  • Fix: Redirect attachment settings getting overwritten

  • Fix: Errors on Woocommerce shop page

  • Fix: Category titles incorrect in certain situations

  • Fix: Port matching issues in redirection module

  • Fix: Multisite always showing "Homepage set to static page" message

  • Fix: Sitewide sitemap settings not applied to network sub-sites

  • Fix: Branda not able to change Smartcrawl admin bar text

  • Fix: Non-public taxonomies listed on Title & Meta page

  • Fix: Autolinks module causing styling issues

  • Fix: Readability analysis compatibility issue with PHP 5.3

  • Fix: Macros can not be added to term title and description

  • Fix: JS console error on WP attachment editor page

  • Fix: UI bugs when focus keyword ignored in SEO analysis

  • Fix: Autolinking module showing self-links

  • Fix: SEO analysis not working with autosaves disabled

  • Fix: Sitemap showing invalid timestamps for certain post types

  • Fix: Links on Title & Meta page pointing to incorrect tab on the social page

  • Fix: Google plus field on social accounts page

  • Fix: Visual issue (tooltip getting cut off) on sitemap reporting page

  • Fix: Social account URLs with whitespaces not saved

  • Fix: Untranslatable string in separator settings on Title & Meta page

  • Fix: Fields losing focus while typing

  • Fix: Visual issues on small screens

  • Fix: Settings pages pointing to old documentation

Download this release

Release Info

Developer khaxan
Plugin Icon 128x128 SmartCrawl SEO
Version 2.3
Comparing to
See all releases

Code changes from version 2.2.5 to 2.3

Files changed (226) hide show
  1. changelog.txt +43 -0
  2. class-mappings.php +100 -86
  3. config.php +1 -1
  4. includes/admin/admin.php +21 -125
  5. includes/admin/class-wds-autolinks-ui.php +79 -0
  6. includes/admin/class-wds-onpage-ui.php +81 -0
  7. includes/admin/class-wds-readability-analysis-ui.php +50 -0
  8. includes/admin/class-wds-seo-analysis-ui.php +50 -0
  9. includes/admin/class-wds-sitemap-ui.php +72 -0
  10. includes/admin/class-wds-social-ui.php +55 -0
  11. includes/admin/metabox.php +108 -119
  12. includes/admin/settings.php +61 -353
  13. includes/admin/settings/autolinks.php +39 -16
  14. includes/admin/settings/checkup.php +86 -42
  15. includes/admin/settings/dashboard.php +56 -9
  16. includes/admin/settings/onpage.php +136 -124
  17. includes/admin/settings/settings.php +16 -50
  18. includes/admin/settings/sitemap.php +84 -31
  19. includes/admin/settings/social.php +14 -7
  20. includes/admin/shared-ui/font/WPMU DEV Dashboard.json +0 -1396
  21. includes/admin/shared-ui/font/WPMU-DEV-App-Icons.eot +0 -0
  22. includes/admin/shared-ui/font/WPMU-DEV-App-Icons.svg +0 -70
  23. includes/admin/shared-ui/font/WPMU-DEV-App-Icons.ttf +0 -0
  24. includes/admin/shared-ui/font/WPMU-DEV-App-Icons.woff +0 -0
  25. includes/admin/shared-ui/font/fontawesome-webfont.eot +0 -0
  26. includes/admin/shared-ui/font/fontawesome-webfont.svg +0 -255
  27. includes/admin/shared-ui/font/fontawesome-webfont.svgz +0 -0
  28. includes/admin/shared-ui/font/fontawesome-webfont.ttf +0 -0
  29. includes/admin/shared-ui/font/fontawesome-webfont.woff +0 -0
  30. includes/admin/shared-ui/img/spin-grey.gif +0 -0
  31. includes/admin/shared-ui/img/spin.gif +0 -0
  32. includes/admin/shared-ui/notice.css +0 -189
  33. includes/admin/shared-ui/notice.js +0 -52
  34. includes/admin/shared-ui/plugin-ui.php +0 -267
  35. includes/admin/shared-ui/wdev-ui.css +0 -2499
  36. includes/admin/shared-ui/wdev-ui.js +0 -1203
  37. includes/admin/taxonomy.php +52 -60
  38. includes/admin/templates/_forms/autolinks.php +0 -12
  39. includes/admin/templates/_forms/import-export.php +0 -6
  40. includes/admin/templates/_forms/redirections.php +0 -2
  41. includes/admin/templates/_forms/settings.php +0 -6
  42. includes/admin/templates/add-email-recipient-modal-body.php +13 -0
  43. includes/admin/templates/add-email-recipient-modal-footer.php +16 -0
  44. includes/admin/templates/advanced-tools/advanced-automatic-linking-types.php +72 -0
  45. includes/admin/templates/advanced-tools/advanced-section-automatic-linking-main.php +61 -0
  46. includes/admin/templates/advanced-tools/advanced-section-automatic-linking-settings.php +54 -51
  47. includes/admin/templates/advanced-tools/advanced-section-automatic-linking.php +40 -60
  48. includes/admin/templates/advanced-tools/advanced-section-moz.php +60 -45
  49. includes/admin/templates/advanced-tools/advanced-section-redirect-settings.php +44 -0
  50. includes/admin/templates/advanced-tools/advanced-section-redirects.php +49 -98
  51. includes/admin/templates/advanced-tools/advanced-side-nav.php +20 -0
  52. includes/admin/templates/advanced-tools/advanced-tools-redirect-item.php +40 -57
  53. includes/admin/templates/advanced-tools/advanced-tools-settings.php +89 -109
  54. includes/admin/templates/advanced-tools/advanced-tools-title-pro-tag.php +13 -0
  55. includes/admin/templates/advanced-tools/underscore-add-redirect-form-body.php +39 -0
  56. includes/admin/templates/advanced-tools/underscore-add-redirect-form-footer.php +11 -0
  57. includes/admin/templates/advanced-tools/underscore-add-redirect-form.php +13 -0
  58. includes/admin/templates/advanced-tools/underscore-bulk-update-form-body.php +27 -0
  59. includes/admin/templates/advanced-tools/underscore-bulk-update-form-footer.php +13 -0
  60. includes/admin/templates/advanced-tools/underscore-bulk-update-form.php +9 -37
  61. includes/admin/templates/advanced-tools/underscore-edit-redirect-form.php +20 -0
  62. includes/admin/templates/advanced-tools/underscore-keywords-custom.php +7 -4
  63. includes/admin/templates/advanced-tools/underscore-keywords-form-body.php +32 -0
  64. includes/admin/templates/advanced-tools/underscore-keywords-form-footer.php +8 -0
  65. includes/admin/templates/advanced-tools/underscore-keywords-form.php +8 -32
  66. includes/admin/templates/advanced-tools/underscore-keywords-pairs.php +9 -9
  67. includes/admin/templates/advanced-tools/underscore-postlist-exclusion-item.php +9 -3
  68. includes/admin/templates/advanced-tools/underscore-postlist-exclusion.php +11 -5
  69. includes/admin/templates/advanced-tools/underscore-postlist-selector-body.php +34 -0
  70. includes/admin/templates/advanced-tools/underscore-postlist-selector-footer.php +7 -0
  71. includes/admin/templates/advanced-tools/underscore-postlist-selector-list-item.php +0 -21
  72. includes/admin/templates/advanced-tools/underscore-postlist-selector-list.php +0 -45
  73. includes/admin/templates/advanced-tools/underscore-postlist-selector.php +9 -14
  74. includes/admin/templates/advanced-tools/underscore-redirect-item.php +6 -11
  75. includes/admin/templates/before-page-container.php +3 -0
  76. includes/admin/templates/checkup/checkup-checkup-results.php +27 -74
  77. includes/admin/templates/checkup/checkup-checkup-running.php +0 -18
  78. includes/admin/templates/checkup/checkup-checkup.php +14 -7
  79. includes/admin/templates/checkup/checkup-get-started.php +13 -0
  80. includes/admin/templates/checkup/checkup-header-actions.php +11 -0
  81. includes/admin/templates/checkup/checkup-no-data.php +16 -0
  82. includes/admin/templates/checkup/checkup-progress-modal-body.php +18 -0
  83. includes/admin/templates/checkup/checkup-progress-modal-header.php +1 -0
  84. includes/admin/templates/checkup/checkup-progress-modal.php +7 -0
  85. includes/admin/templates/checkup/checkup-reporting-dow-select.php +24 -0
  86. includes/admin/templates/checkup/checkup-reporting-schedule.php +56 -0
  87. includes/admin/templates/checkup/checkup-reporting-title-pro-tag.php +13 -0
  88. includes/admin/templates/checkup/checkup-reporting-tod-select.php +24 -0
  89. includes/admin/templates/checkup/checkup-reporting.php +63 -105
  90. includes/admin/templates/checkup/checkup-results-inner.php +82 -0
  91. includes/admin/templates/checkup/checkup-settings-inner.php +79 -0
  92. includes/admin/templates/checkup/checkup-settings.php +33 -72
  93. includes/admin/templates/checkup/checkup-top.php +71 -52
  94. includes/admin/templates/dashboard/dashboard-box-title-url-crawl-in-progress.php +3 -0
  95. includes/admin/templates/dashboard/dashboard-box-title-url-crawl-stats.php +14 -6
  96. includes/admin/templates/dashboard/dashboard-checkup-progress.php +2 -8
  97. includes/admin/templates/dashboard/dashboard-content-analysis-readability-overview.php +81 -41
  98. includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php +65 -39
  99. includes/admin/templates/dashboard/dashboard-cross-sell-footer.php +71 -0
  100. includes/admin/templates/dashboard/dashboard-mini-checkup-report.php +22 -13
  101. includes/admin/templates/dashboard/dashboard-top.php +109 -81
  102. includes/admin/templates/dashboard/dashboard-url-crawl-in-progress-small.php +5 -2
  103. includes/admin/templates/dashboard/dashboard-url-crawl-in-progress.php +9 -2
  104. includes/admin/templates/dashboard/dashboard-url-crawl-no-data-small.php +2 -2
  105. includes/admin/templates/dashboard/dashboard-url-crawl-stats.php +17 -8
  106. includes/admin/templates/dashboard/dashboard-widget-advanced-tools.php +74 -61
  107. includes/admin/templates/dashboard/dashboard-widget-content-analysis.php +29 -26
  108. includes/admin/templates/dashboard/dashboard-widget-onpage.php +27 -29
  109. includes/admin/templates/dashboard/dashboard-widget-seo-checkup.php +75 -44
  110. includes/admin/templates/dashboard/dashboard-widget-sitemap.php +62 -57
  111. includes/admin/templates/dashboard/dashboard-widget-social.php +52 -51
  112. includes/admin/templates/dashboard/dashboard.php +16 -18
  113. includes/admin/templates/dashboard/onboard-modal-body.php +95 -0
  114. includes/admin/templates/dashboard/onboard-modal-footer.php +7 -0
  115. includes/admin/templates/dashboard/onboard-modal-header-button.php +9 -0
  116. includes/admin/templates/dashboard/onboard-progress.php +0 -1
  117. includes/admin/templates/dashboard/onboarding.php +9 -113
  118. includes/admin/templates/disabled-component-inner.php +30 -7
  119. includes/admin/templates/disabled-component.php +5 -5
  120. includes/admin/templates/dismissable-notice.php +7 -3
  121. includes/admin/templates/email-recipient.php +35 -0
  122. includes/admin/templates/email-recipients.php +39 -0
  123. includes/admin/templates/floating-message.php +15 -0
  124. includes/admin/templates/footer.php +65 -0
  125. includes/admin/templates/links-dropdown.php +8 -6
  126. includes/admin/templates/macros-dropdown.php +13 -0
  127. includes/admin/templates/mascot-message.php +11 -7
  128. includes/admin/templates/media-url-field.php +6 -4
  129. includes/admin/templates/metabox/analysis-readability.php +68 -88
  130. includes/admin/templates/metabox/analysis-seo-analysis.php +95 -59
  131. includes/admin/templates/metabox/analysis.php +0 -5
  132. includes/admin/templates/metabox/horizontal-tab-nav.php +23 -6
  133. includes/admin/templates/metabox/horizontal-tab.php +9 -18
  134. includes/admin/templates/metabox/metabox-advanced-autolinks.php +24 -0
  135. includes/admin/templates/metabox/metabox-advanced-canonical.php +21 -0
  136. includes/admin/templates/metabox/metabox-advanced-indexing.php +81 -0
  137. includes/admin/templates/metabox/metabox-advanced-redirect.php +24 -0
  138. includes/admin/templates/metabox/metabox-advanced-sitemap-priority.php +26 -0
  139. includes/admin/templates/metabox/metabox-dummy-preview.php +2 -2
  140. includes/admin/templates/metabox/metabox-main.php +64 -86
  141. includes/admin/templates/metabox/metabox-meta-edit-form.php +63 -70
  142. includes/admin/templates/metabox/metabox-preview.php +3 -3
  143. includes/admin/templates/metabox/metabox-readability-report-inner.php +104 -0
  144. includes/admin/templates/metabox/metabox-readability.php +10 -0
  145. includes/admin/templates/metabox/metabox-seo-analysis-container.php +31 -26
  146. includes/admin/templates/metabox/metabox-seo-meta.php +10 -0
  147. includes/admin/templates/metabox/metabox-social-meta-tags.php +63 -69
  148. includes/admin/templates/metabox/metabox-social-opengraph.php +32 -0
  149. includes/admin/templates/metabox/metabox-social-twitter.php +32 -0
  150. includes/admin/templates/metabox/metabox-tab-advanced.php +7 -166
  151. includes/admin/templates/metabox/metabox-tab-readability.php +9 -10
  152. includes/admin/templates/metabox/metabox-tab-seo.php +7 -20
  153. includes/admin/templates/metabox/metabox-tab-social.php +12 -96
  154. includes/admin/templates/modal.php +70 -0
  155. includes/admin/templates/notice.php +2 -2
  156. includes/admin/templates/onpage/onpage-general-settings.php +89 -0
  157. includes/admin/templates/onpage/onpage-header-actions.php +2 -0
  158. includes/admin/templates/onpage/onpage-macros-modal.php +28 -0
  159. includes/admin/templates/onpage/onpage-meta-robots.php +2 -2
  160. includes/admin/templates/onpage/onpage-og-disabled.php +3 -2
  161. includes/admin/templates/onpage/onpage-og-settings.php +3 -1
  162. includes/admin/templates/onpage/onpage-og-twitter.php +34 -33
  163. includes/admin/templates/onpage/onpage-preview.php +2 -1
  164. includes/admin/templates/onpage/onpage-section-404.php +6 -26
  165. includes/admin/templates/onpage/onpage-section-author-archive.php +5 -31
  166. includes/admin/templates/onpage/onpage-section-buddypress-groups.php +16 -28
  167. includes/admin/templates/onpage/onpage-section-buddypress-profile.php +16 -28
  168. includes/admin/templates/onpage/onpage-section-date-archive.php +5 -31
  169. includes/admin/templates/onpage/onpage-section-homepage.php +22 -56
  170. includes/admin/templates/onpage/onpage-section-post-type-archive.php +5 -44
  171. includes/admin/templates/onpage/onpage-section-post-type.php +22 -42
  172. includes/admin/templates/onpage/onpage-section-search.php +5 -31
  173. includes/admin/templates/onpage/onpage-section-settings.php +10 -9
  174. includes/admin/templates/onpage/onpage-section-taxonomy.php +16 -36
  175. includes/admin/templates/onpage/onpage-settings.php +66 -72
  176. includes/admin/templates/onpage/onpage-sidenav.php +35 -0
  177. includes/admin/templates/onpage/onpage-social-meta-tags.php +63 -75
  178. includes/admin/templates/onpage/onpage-twitter-disabled.php +3 -2
  179. includes/admin/templates/onpage/onpage-twitter-settings.php +3 -1
  180. includes/admin/templates/onpage/underscore-macros-list.php +1 -1
  181. includes/admin/templates/page-header.php +29 -0
  182. includes/admin/templates/progress-bar.php +16 -4
  183. includes/admin/templates/progress-notice.php +17 -15
  184. includes/admin/templates/quick-edit-robots.php +30 -23
  185. includes/admin/templates/quick-edit-title.php +6 -6
  186. includes/admin/templates/report-vertical-tab.php +1 -11
  187. includes/admin/templates/seomoz-dashboard-widget.php +90 -88
  188. includes/admin/templates/settings/import-status-modal.php +5 -8
  189. includes/admin/templates/settings/settings-custom-meta-tag.php +1 -0
  190. includes/admin/templates/settings/settings-section-general.php +103 -110
  191. includes/admin/templates/settings/settings-section-import-export.php +69 -44
  192. includes/admin/templates/settings/settings-section-user-roles.php +62 -68
  193. includes/admin/templates/settings/settings.php +86 -63
  194. includes/admin/templates/settings/underscore-import-error.php +12 -10
  195. includes/admin/templates/settings/underscore-import-options.php +11 -8
  196. includes/admin/templates/settings/underscore-import-progress.php +3 -3
  197. includes/admin/templates/settings/underscore-import-success.php +15 -11
  198. includes/admin/templates/sitemap/sitemap-buddypress-settings.php +52 -50
  199. includes/admin/templates/sitemap/sitemap-crawl-content.php +28 -10
  200. includes/admin/templates/sitemap/sitemap-crawl-issue-generic.php +17 -28
  201. includes/admin/templates/sitemap/sitemap-crawl-issue-ignored.php +11 -5
  202. includes/admin/templates/sitemap/sitemap-crawl-issue-sitemap.php +6 -5
  203. includes/admin/templates/sitemap/sitemap-crawl-issues-3xx.php +8 -11
  204. includes/admin/templates/sitemap/sitemap-crawl-issues-4xx.php +8 -11
  205. includes/admin/templates/sitemap/sitemap-crawl-issues-5xx.php +8 -11
  206. includes/admin/templates/sitemap/sitemap-crawl-issues-generic-controls.php +8 -2
  207. includes/admin/templates/sitemap/sitemap-crawl-issues-group.php +95 -57
  208. includes/admin/templates/sitemap/sitemap-crawl-issues-inaccessible.php +8 -11
  209. includes/admin/templates/sitemap/sitemap-crawl-issues-sitemap-controls.php +16 -4
  210. includes/admin/templates/sitemap/sitemap-crawl-issues-sitemap.php +4 -5
  211. includes/admin/templates/sitemap/sitemap-crawl-results.php +11 -16
  212. includes/admin/templates/sitemap/sitemap-crawl-stats.php +57 -20
  213. includes/admin/templates/sitemap/sitemap-disabled.php +12 -0
  214. includes/admin/templates/sitemap/sitemap-extra-actions.php +35 -0
  215. includes/admin/templates/sitemap/sitemap-no-crawler-data.php +5 -5
  216. includes/admin/templates/sitemap/sitemap-occurrences-overlay.php +0 -42
  217. includes/admin/templates/sitemap/sitemap-part.php +24 -19
  218. includes/admin/templates/sitemap/sitemap-progress-bar.php +3 -1
  219. includes/admin/templates/sitemap/sitemap-redirect-overlay.php +0 -64
  220. includes/admin/templates/sitemap/sitemap-reporting-dow-select.php +22 -0
  221. includes/admin/templates/sitemap/sitemap-reporting-schedule.php +53 -0
  222. includes/admin/templates/sitemap/sitemap-reporting-title-pro-tag.php +13 -0
  223. includes/admin/templates/sitemap/sitemap-reporting-tod-select.php +24 -0
  224. includes/admin/templates/sitemap/sitemap-section-advanced.php +38 -15
  225. includes/admin/templates/sitemap/sitemap-section-reporting.php +57 -75
  226. includes/admin/templates/sitemap/sitemap-section-settings.php +0 -6
changelog.txt CHANGED
@@ -2,6 +2,49 @@ Plugin Name: SmartCrawl SEO
2
 
3
  Change Log:
4
  ----------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  2.2.5 - 2019-02-18
6
  ----------------------------------------------------------------------
7
  - Add: New filters for modifying OpenGraph values
2
 
3
  Change Log:
4
  ----------------------------------------------------------------------
5
+ 2.3.0 - 2019-05-08
6
+ ----------------------------------------------------------------------
7
+ - Add: New, exciting, mobile-friendly UI in the admin area
8
+ - Add: Support for whitelabel features
9
+ - Add: Improved performance and reliability of SEO checkup and sitemap crawler
10
+ - Add: Code improvements for the display of meta values
11
+ - Add: New filter for addition of extra SEO and readability content
12
+ - Add: Yoast importer now less likely to show "No compatible data ..." error
13
+ - Add: New BuddyPress settings on Title & Meta page
14
+ - Fix: Redirect attachment settings getting overwritten
15
+ - Fix: Errors on Woocommerce shop page
16
+ - Fix: Category titles incorrect in certain situations
17
+ - Fix: Port matching issues in redirection module
18
+ - Fix: Multisite always showing "Homepage set to static page" message
19
+ - Fix: Sitewide sitemap settings not applied to network sub-sites
20
+ - Fix: Branda not able to change Smartcrawl admin bar text
21
+ - Fix: Non-public taxonomies listed on Title & Meta page
22
+ - Fix: Autolinks module causing styling issues
23
+ - Fix: Readability analysis compatibility issue with PHP 5.3
24
+ - Fix: Macros can not be added to term title and description
25
+ - Fix: JS console error on WP attachment editor page
26
+ - Fix: UI bugs when focus keyword ignored in SEO analysis
27
+ - Fix: Autolinking module showing self-links
28
+ - Fix: SEO analysis not working with autosaves disabled
29
+ - Fix: Sitemap showing invalid timestamps for certain post types
30
+ - Fix: Links on Title & Meta page pointing to incorrect tab on the social page
31
+ - Fix: Google plus field on social accounts page
32
+ - Fix: Visual issue (tooltip getting cut off) on sitemap reporting page
33
+ - Fix: Social account URLs with whitespaces not saved
34
+ - Fix: Untranslatable string in separator settings on Title & Meta page
35
+ - Fix: Fields losing focus while typing
36
+ - Fix: Visual issues on small screens
37
+ - Fix: Settings pages pointing to old documentation
38
+
39
+ 2.2.6 - 2019-03-26
40
+ ----------------------------------------------------------------------
41
+ - Add: Support for Yoast v10 and AIOSEO v2.12 in third-party importer
42
+
43
+ - Fix: Redirects added from sitemap crawl report not converted to absolute
44
+ - Fix: Sitemap can't be removed while SC is active
45
+ - Fix: Import not working for Automatic linking settings
46
+ - Fix: Metabox conflict in classic editor
47
+
48
  2.2.5 - 2019-02-18
49
  ----------------------------------------------------------------------
50
  - Add: New filters for modifying OpenGraph values
class-mappings.php CHANGED
@@ -2,96 +2,110 @@
2
 
3
  return array(
4
  // Classes in includes/core/
5
- 'Smartcrawl_AIOSEOP_Importer' => '/core/class-wds-aioseop-importer.php',
6
- 'Smartcrawl_Canonical_Value_Helper' => '/core/class-wds-canonical-value-helper.php',
7
- 'Smartcrawl_Checks' => '/core/class-wds-checks.php',
8
- 'Smartcrawl_Compatibility' => '/core/class-wds-compatibility.php',
9
- 'Smartcrawl_Controller_Analysis' => '/core/class-wds-controller-analysis.php',
10
- 'Smartcrawl_Controller_Cron' => '/core/class-wds-controller-cron.php',
11
- 'Smartcrawl_Controller_Hub' => '/core/class-wds-controller-hub.php',
12
- 'Smartcrawl_Controller_IO' => '/core/class-wds-controller-io.php',
13
- 'Smartcrawl_Controller_Onboard' => '/core/class-wds-controller-onboard.php',
14
- 'Smartcrawl_Controller_Pointers' => '/core/class-wds-controller-pointers.php',
15
- 'Smartcrawl_Controller_Sitemap' => '/core/class-wds-controller-sitemap.php',
16
- 'Smartcrawl_Core_Request' => '/core/class-wds-core-request.php',
17
- 'Smartcrawl_Endpoint_Resolver' => '/core/class-wds-endpoint-resolver.php',
18
- 'Smartcrawl_Export' => '/core/class-wds-export.php',
19
- 'Smartcrawl_Html' => '/core/class-wds-html.php',
20
- 'Smartcrawl_Import' => '/core/class-wds-import.php',
21
- 'Smartcrawl_Importer' => '/core/class-wds-importer.php',
22
- 'Smartcrawl_Logger' => '/core/class-wds-logger.php',
23
- 'Smartcrawl_Macro' => '/core/class-wds-macro.php',
24
- 'Smartcrawl_Model' => '/core/class-wds-model.php',
25
- 'Smartcrawl_Model_Analysis' => '/core/class-wds-model-analysis.php',
26
- 'Smartcrawl_Model_Ignores' => '/core/class-wds-model-ignores.php',
27
- 'Smartcrawl_Model_IO' => '/core/class-wds-model-io.php',
28
- 'Smartcrawl_Model_Redirection' => '/core/class-wds-model-redirection.php',
29
- 'Smartcrawl_Model_User' => '/core/class-wds-model-user.php',
30
- 'Smartcrawl_Renderable' => '/core/class-wds-renderable.php',
31
- 'Smartcrawl_Replacement_Helper' => '/core/class-wds-replacement-helper.php',
32
- 'Smartcrawl_Simple_Renderer' => '/core/class-wds-simple-renderer.php',
33
- 'Smartcrawl_Reset' => '/core/class-wds-reset.php',
34
- 'Smartcrawl_OpenGraph_Value_Helper' => '/core/class-wds-opengraph-value-helper.php',
35
- 'Smartcrawl_Robots_Value_Helper' => '/core/class-wds-robots-value-helper.php',
36
- 'Smartcrawl_SeoReport' => '/core/class-wds-seo-report.php',
37
- 'Smartcrawl_Service' => '/core/class-wds-service.php',
38
- 'Smartcrawl_Settings' => '/core/class-wds-settings.php',
39
- 'Smartcrawl_String' => '/core/class-wds-string.php',
40
- 'Smartcrawl_Type_Traverser' => '/core/class-wds-type-traverser.php',
41
- 'Smartcrawl_WorkUnit' => '/core/class-wds-work-unit.php',
42
- 'Smartcrawl_Yoast_Importer' => '/core/class-wds-yoast-importer.php',
 
 
 
 
 
43
  // Classes in includes/core/service/
44
- 'Smartcrawl_Checkup_Ajax_Service' => '/core/service/class-wds-checkup-ajax-service.php',
45
- 'Smartcrawl_Checkup_Rest_Service' => '/core/service/class-wds-checkup-rest-service.php',
46
- 'Smartcrawl_Checkup_Service_Implementation' => '/core/service/class-wds-checkup-service-implementation.php',
47
- 'Smartcrawl_Checkup_Service' => '/core/service/class-wds-checkup-service.php',
48
- 'Smartcrawl_Seo_Service' => '/core/service/class-wds-seo-service.php',
49
- 'Smartcrawl_Site_Service' => '/core/service/class-wds-site-service.php',
50
- 'Smartcrawl_Uptime_Service' => '/core/service/class-wds-uptime-service.php',
51
  // Classes in includes/core/checks/
52
- 'Smartcrawl_Check_Post_Abstract' => '/core/checks/class-wds-check-post-abstract.php',
53
- 'Smartcrawl_Check_Abstract' => '/core/checks/class-wds-check-abstract.php',
54
- 'Smartcrawl_Check_Content_Length' => '/core/checks/class-wds-check-content-length.php',
55
- 'Smartcrawl_Check_Focus' => '/core/checks/class-wds-check-focus.php',
56
- 'Smartcrawl_Check_Focus_Stopwords' => '/core/checks/class-wds-check-focus-stopwords.php',
57
- 'Smartcrawl_Check_Imgalts_Keywords' => '/core/checks/class-wds-check-imgalts-keywords.php',
58
- 'Smartcrawl_Check_Keyword_Density' => '/core/checks/class-wds-check-keyword-density.php',
59
- 'Smartcrawl_Check_Keywords_Used' => '/core/checks/class-wds-check-keywords-used.php',
60
- 'Smartcrawl_Check_Links_Count' => '/core/checks/class-wds-check-links-count.php',
61
- 'Smartcrawl_Check_Metadesc_Keywords' => '/core/checks/class-wds-check-metadesc-keywords.php',
62
- 'Smartcrawl_Check_Metadesc_Length' => '/core/checks/class-wds-check-metadesc-length.php',
63
- 'Smartcrawl_Check_Para_Keywords' => '/core/checks/class-wds-check-para-keywords.php',
64
- 'Smartcrawl_Check_Slug_Keywords' => '/core/checks/class-wds-check-slug-keywords.php',
65
- 'Smartcrawl_Check_Subheadings_Keywords' => '/core/checks/class-wds-check-subheadings-keywords.php',
66
- 'Smartcrawl_Check_Title_Keywords' => '/core/checks/class-wds-check-title-keywords.php',
67
- 'Smartcrawl_Check_Title_Length' => '/core/checks/class-wds-check-title-length.php',
68
  // Classes in includes/admin/
69
- 'Smartcrawl_Admin' => '/admin/admin.php',
70
- 'Smartcrawl_Metabox' => '/admin/metabox.php',
71
- 'Smartcrawl_Settings_Admin' => '/admin/settings.php',
72
- 'Smartcrawl_Taxonomy' => '/admin/taxonomy.php',
 
 
 
 
 
 
73
  // Classes in includes/admin/settings/
74
- 'Smartcrawl_Autolinks_Settings' => '/admin/settings/autolinks.php',
75
- 'Smartcrawl_Checkup_Settings' => '/admin/settings/checkup.php',
76
- 'Smartcrawl_Settings_Dashboard' => '/admin/settings/dashboard.php',
77
- 'Smartcrawl_Onpage_Settings' => '/admin/settings/onpage.php',
78
- 'Smartcrawl_Settings_Settings' => '/admin/settings/settings.php',
79
- 'Smartcrawl_Sitemap_Settings' => '/admin/settings/sitemap.php',
80
- 'Smartcrawl_Social_Settings' => '/admin/settings/social.php',
81
  // Classes in includes/tools/
82
- 'Smartcrawl_Autolinks' => '/tools/autolinks.php',
83
- 'Smartcrawl_OpenGraph_Printer' => '/tools/class-wds-opengraph-printer.php',
84
- 'Smartcrawl_Pinterest_Printer' => '/tools/class-wds-pinterest-printer.php',
85
- 'Smartcrawl_Schema_Printer' => '/tools/class-wds-schema-printer.php',
86
- 'Smartcrawl_Twitter_Printer' => '/tools/class-wds-twitter-printer.php',
87
- 'Smartcrawl_OnPage' => '/tools/onpage.php',
88
- 'Smartcrawl_Redirection_Front' => '/tools/redirect.php',
89
- 'Smartcrawl_Xml_Sitemap' => '/tools/sitemaps.php',
90
- 'Smartcrawl_Sitemaps_Dashboard_Widget' => '/tools/sitemaps-dashboard-widget.php',
91
- 'Smartcrawl_Xml_VideoSitemap' => '/tools/video-sitemaps.php',
 
92
  // Classes in includes/tools/seomoz/
93
- 'SEOMozAPI' => '/tools/seomoz/api.php',
94
- 'Smartcrawl_Seomoz_Dashboard_Widget' => '/tools/seomoz/dashboard-widget.php',
95
- 'Smartcrawl_Seomoz_Dashboard_Widget_Renderer' => '/tools/seomoz/widget-renderer.php',
96
- 'Smartcrawl_Seomoz_Results' => '/tools/seomoz/results.php',
 
 
97
  );
2
 
3
  return array(
4
  // Classes in includes/core/
5
+ 'Smartcrawl_AIOSEOP_Importer' => '/core/class-wds-aioseop-importer.php',
6
+ 'Smartcrawl_Base_Controller' => '/core/class-wds-base-controller.php',
7
+ 'Smartcrawl_Canonical_Value_Helper' => '/core/class-wds-canonical-value-helper.php',
8
+ 'Smartcrawl_Checks' => '/core/class-wds-checks.php',
9
+ 'Smartcrawl_Compatibility' => '/core/class-wds-compatibility.php',
10
+ 'Smartcrawl_Controller_Analysis' => '/core/class-wds-controller-analysis.php',
11
+ 'Smartcrawl_Controller_Assets' => '/core/class-wds-controller-assets.php',
12
+ 'Smartcrawl_Controller_Checkup_Progress' => '/core/class-wds-controller-checkup-progress.php',
13
+ 'Smartcrawl_Controller_Cron' => '/core/class-wds-controller-cron.php',
14
+ 'Smartcrawl_Controller_Hub' => '/core/class-wds-controller-hub.php',
15
+ 'Smartcrawl_Controller_IO' => '/core/class-wds-controller-io.php',
16
+ 'Smartcrawl_Controller_Onboard' => '/core/class-wds-controller-onboard.php',
17
+ 'Smartcrawl_Controller_Pointers' => '/core/class-wds-controller-pointers.php',
18
+ 'Smartcrawl_Controller_Sitemap' => '/core/class-wds-controller-sitemap.php',
19
+ 'Smartcrawl_White_Label' => '/core/class-wds-white-label.php',
20
+ 'Smartcrawl_Core_Request' => '/core/class-wds-core-request.php',
21
+ 'Smartcrawl_Endpoint_Resolver' => '/core/class-wds-endpoint-resolver.php',
22
+ 'Smartcrawl_Export' => '/core/class-wds-export.php',
23
+ 'Smartcrawl_Html' => '/core/class-wds-html.php',
24
+ 'Smartcrawl_Import' => '/core/class-wds-import.php',
25
+ 'Smartcrawl_Importer' => '/core/class-wds-importer.php',
26
+ 'Smartcrawl_Logger' => '/core/class-wds-logger.php',
27
+ 'Smartcrawl_Macro' => '/core/class-wds-macro.php',
28
+ 'Smartcrawl_Meta_Value_Helper' => '/core/class-wds-meta-value-helper.php',
29
+ 'Smartcrawl_Model' => '/core/class-wds-model.php',
30
+ 'Smartcrawl_Model_Analysis' => '/core/class-wds-model-analysis.php',
31
+ 'Smartcrawl_Model_Ignores' => '/core/class-wds-model-ignores.php',
32
+ 'Smartcrawl_Model_IO' => '/core/class-wds-model-io.php',
33
+ 'Smartcrawl_Model_Redirection' => '/core/class-wds-model-redirection.php',
34
+ 'Smartcrawl_Model_User' => '/core/class-wds-model-user.php',
35
+ 'Smartcrawl_Renderable' => '/core/class-wds-renderable.php',
36
+ 'Smartcrawl_Replacement_Helper' => '/core/class-wds-replacement-helper.php',
37
+ 'Smartcrawl_Simple_Renderer' => '/core/class-wds-simple-renderer.php',
38
+ 'Smartcrawl_Reset' => '/core/class-wds-reset.php',
39
+ 'Smartcrawl_OpenGraph_Value_Helper' => '/core/class-wds-opengraph-value-helper.php',
40
+ 'Smartcrawl_Robots_Value_Helper' => '/core/class-wds-robots-value-helper.php',
41
+ 'Smartcrawl_SeoReport' => '/core/class-wds-seo-report.php',
42
+ 'Smartcrawl_Service' => '/core/class-wds-service.php',
43
+ 'Smartcrawl_Settings' => '/core/class-wds-settings.php',
44
+ 'Smartcrawl_String' => '/core/class-wds-string.php',
45
+ 'Smartcrawl_Type_Traverser' => '/core/class-wds-type-traverser.php',
46
+ 'Smartcrawl_WorkUnit' => '/core/class-wds-work-unit.php',
47
+ 'Smartcrawl_Yoast_Importer' => '/core/class-wds-yoast-importer.php',
48
  // Classes in includes/core/service/
49
+ 'Smartcrawl_Checkup_Ajax_Service' => '/core/service/class-wds-checkup-ajax-service.php',
50
+ 'Smartcrawl_Checkup_Rest_Service' => '/core/service/class-wds-checkup-rest-service.php',
51
+ 'Smartcrawl_Checkup_Service_Implementation' => '/core/service/class-wds-checkup-service-implementation.php',
52
+ 'Smartcrawl_Checkup_Service' => '/core/service/class-wds-checkup-service.php',
53
+ 'Smartcrawl_Seo_Service' => '/core/service/class-wds-seo-service.php',
54
+ 'Smartcrawl_Site_Service' => '/core/service/class-wds-site-service.php',
55
+ 'Smartcrawl_Uptime_Service' => '/core/service/class-wds-uptime-service.php',
56
  // Classes in includes/core/checks/
57
+ 'Smartcrawl_Check_Post_Abstract' => '/core/checks/class-wds-check-post-abstract.php',
58
+ 'Smartcrawl_Check_Abstract' => '/core/checks/class-wds-check-abstract.php',
59
+ 'Smartcrawl_Check_Content_Length' => '/core/checks/class-wds-check-content-length.php',
60
+ 'Smartcrawl_Check_Focus' => '/core/checks/class-wds-check-focus.php',
61
+ 'Smartcrawl_Check_Focus_Stopwords' => '/core/checks/class-wds-check-focus-stopwords.php',
62
+ 'Smartcrawl_Check_Imgalts_Keywords' => '/core/checks/class-wds-check-imgalts-keywords.php',
63
+ 'Smartcrawl_Check_Keyword_Density' => '/core/checks/class-wds-check-keyword-density.php',
64
+ 'Smartcrawl_Check_Keywords_Used' => '/core/checks/class-wds-check-keywords-used.php',
65
+ 'Smartcrawl_Check_Links_Count' => '/core/checks/class-wds-check-links-count.php',
66
+ 'Smartcrawl_Check_Metadesc_Keywords' => '/core/checks/class-wds-check-metadesc-keywords.php',
67
+ 'Smartcrawl_Check_Metadesc_Length' => '/core/checks/class-wds-check-metadesc-length.php',
68
+ 'Smartcrawl_Check_Para_Keywords' => '/core/checks/class-wds-check-para-keywords.php',
69
+ 'Smartcrawl_Check_Slug_Keywords' => '/core/checks/class-wds-check-slug-keywords.php',
70
+ 'Smartcrawl_Check_Subheadings_Keywords' => '/core/checks/class-wds-check-subheadings-keywords.php',
71
+ 'Smartcrawl_Check_Title_Keywords' => '/core/checks/class-wds-check-title-keywords.php',
72
+ 'Smartcrawl_Check_Title_Length' => '/core/checks/class-wds-check-title-length.php',
73
  // Classes in includes/admin/
74
+ 'Smartcrawl_Admin' => '/admin/admin.php',
75
+ 'Smartcrawl_Metabox' => '/admin/metabox.php',
76
+ 'Smartcrawl_Settings_Admin' => '/admin/settings.php',
77
+ 'Smartcrawl_Taxonomy' => '/admin/taxonomy.php',
78
+ 'Smartcrawl_Autolinks_UI' => '/admin/class-wds-autolinks-ui.php',
79
+ 'Smartcrawl_OnPage_UI' => '/admin/class-wds-onpage-ui.php',
80
+ 'Smartcrawl_SEO_Analysis_UI' => '/admin/class-wds-seo-analysis-ui.php',
81
+ 'Smartcrawl_Readability_Analysis_UI' => '/admin/class-wds-readability-analysis-ui.php',
82
+ 'Smartcrawl_Social_UI' => '/admin/class-wds-social-ui.php',
83
+ 'Smartcrawl_Sitemap_UI' => '/admin/class-wds-sitemap-ui.php',
84
  // Classes in includes/admin/settings/
85
+ 'Smartcrawl_Autolinks_Settings' => '/admin/settings/autolinks.php',
86
+ 'Smartcrawl_Checkup_Settings' => '/admin/settings/checkup.php',
87
+ 'Smartcrawl_Settings_Dashboard' => '/admin/settings/dashboard.php',
88
+ 'Smartcrawl_Onpage_Settings' => '/admin/settings/onpage.php',
89
+ 'Smartcrawl_Settings_Settings' => '/admin/settings/settings.php',
90
+ 'Smartcrawl_Sitemap_Settings' => '/admin/settings/sitemap.php',
91
+ 'Smartcrawl_Social_Settings' => '/admin/settings/social.php',
92
  // Classes in includes/tools/
93
+ 'Smartcrawl_Autolinks' => '/tools/autolinks.php',
94
+ 'Smartcrawl_OpenGraph_Printer' => '/tools/class-wds-opengraph-printer.php',
95
+ 'Smartcrawl_Pinterest_Printer' => '/tools/class-wds-pinterest-printer.php',
96
+ 'Smartcrawl_Schema_Printer' => '/tools/class-wds-schema-printer.php',
97
+ 'Smartcrawl_Social_Front' => '/tools/class-wds-social-front.php',
98
+ 'Smartcrawl_Twitter_Printer' => '/tools/class-wds-twitter-printer.php',
99
+ 'Smartcrawl_OnPage' => '/tools/onpage.php',
100
+ 'Smartcrawl_Redirection_Front' => '/tools/redirect.php',
101
+ 'Smartcrawl_Xml_Sitemap' => '/tools/sitemaps.php',
102
+ 'Smartcrawl_Sitemaps_Dashboard_Widget' => '/tools/sitemaps-dashboard-widget.php',
103
+ 'Smartcrawl_Xml_VideoSitemap' => '/tools/video-sitemaps.php',
104
  // Classes in includes/tools/seomoz/
105
+ 'Smartcrawl_Moz_API' => '/tools/seomoz/class-wds-moz-api.php',
106
+ 'Smartcrawl_Moz_Dashboard_Widget' => '/tools/seomoz/class-wds-moz-dashboard-widget.php',
107
+ 'Smartcrawl_Moz_Results_Renderer' => '/tools/seomoz/class-wds-moz-results-renderer.php',
108
+ 'Smartcrawl_Moz_Metabox' => '/tools/seomoz/class-wds-moz-metabox.php',
109
+ // Classes in includes/
110
+ 'Smartcrawl_Front' => '/front.php',
111
  );
config.php CHANGED
@@ -80,7 +80,7 @@ if ( ! defined( 'SMARTCRAWL_WHITELABEL_ON' ) ) {
80
  define( 'SMARTCRAWL_WHITELABEL_ON', false );
81
  }
82
  if ( ! defined( 'SMARTCRAWL_OMIT_PORT_MATCHES' ) ) {
83
- define( 'SMARTCRAWL_OMIT_PORT_MATCHES', false );
84
  }
85
  if ( ! defined( 'SMARTCRAWL_ANALYSIS_REQUEST_TIMEOUT' ) ) {
86
  define( 'SMARTCRAWL_ANALYSIS_REQUEST_TIMEOUT', 5 );
80
  define( 'SMARTCRAWL_WHITELABEL_ON', false );
81
  }
82
  if ( ! defined( 'SMARTCRAWL_OMIT_PORT_MATCHES' ) ) {
83
+ define( 'SMARTCRAWL_OMIT_PORT_MATCHES', true );
84
  }
85
  if ( ! defined( 'SMARTCRAWL_ANALYSIS_REQUEST_TIMEOUT' ) ) {
86
  define( 'SMARTCRAWL_ANALYSIS_REQUEST_TIMEOUT', 5 );
includes/admin/admin.php CHANGED
@@ -8,7 +8,13 @@
8
  /**
9
  * Admin handling root class
10
  */
11
- class Smartcrawl_Admin extends Smartcrawl_Renderable {
 
 
 
 
 
 
12
 
13
  /**
14
  * Admin page handlers
@@ -18,16 +24,20 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
18
  private $_handlers = array();
19
 
20
  /**
21
- * Constructor
22
  */
23
- public function __construct() {
24
- $this->init();
 
 
 
 
25
  }
26
 
27
  /**
28
  * Initializing method
29
  */
30
- private function init() {
31
  // Set up dash.
32
  if ( file_exists( SMARTCRAWL_PLUGIN_DIR . 'external/dash/wpmudev-dash-notification.php' ) ) {
33
  global $wpmudev_notices;
@@ -59,8 +69,6 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
59
  add_filter( 'load-index.php', array( $this, 'enqueue_dashboard_resources' ), 20 );
60
 
61
  add_action( 'wp_ajax_wds_dismiss_message', array( $this, 'smartcrawl_dismiss_message' ) );
62
- add_action( 'wp_ajax_wds-user-search', array( $this, 'json_user_search' ) );
63
- add_action( 'wp_ajax_wds-user-search-add-user', array( $this, 'json_user_search_add_user' ) );
64
 
65
  if ( Smartcrawl_Settings::get_setting( 'extras-admin_bar' ) ) {
66
  add_action( 'admin_bar_menu', array( $this, 'add_toolbar_items' ), 99 );
@@ -68,18 +76,11 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
68
 
69
  add_filter( 'plugin_action_links_' . SMARTCRAWL_PLUGIN_BASENAME, array( $this, 'add_settings_link' ) );
70
 
71
- $smartcrawl_options = Smartcrawl_Settings::get_options();
72
-
73
  // Sanity check first!
74
  if ( ! get_option( 'blog_public' ) ) {
75
  add_action( 'admin_notices', array( $this, 'blog_not_public_notice' ) );
76
  }
77
 
78
- if ( ! empty( $smartcrawl_options['access-id'] ) && ! empty( $smartcrawl_options['secret-key'] ) ) {
79
- Smartcrawl_Seomoz_Results::run();
80
- Smartcrawl_Seomoz_Dashboard_Widget::run();
81
- }
82
-
83
  $this->_handlers['dashboard'] = Smartcrawl_Settings_Dashboard::get_instance();
84
 
85
  if ( Smartcrawl_Settings::get_setting( 'checkup' ) ) {
@@ -95,25 +96,8 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
95
  }
96
 
97
  $this->_handlers['sitemap'] = Smartcrawl_Sitemap_Settings::get_instance();
98
- if ( Smartcrawl_Settings::get_setting( 'sitemap' ) ) {
99
- Smartcrawl_Xml_Sitemap::run();
100
- Smartcrawl_Sitemaps_Dashboard_Widget::run();
101
- }
102
-
103
  $this->_handlers['autolinks'] = Smartcrawl_Autolinks_Settings::get_instance();
104
-
105
  $this->_handlers['settings'] = Smartcrawl_Settings_Settings::get_instance();
106
-
107
- Smartcrawl_Controller_Onboard::serve();
108
- Smartcrawl_Controller_Analysis::serve();
109
- Smartcrawl_Controller_Pointers::run();
110
-
111
- if ( Smartcrawl_Settings::get_setting( 'onpage' ) ) {
112
- Smartcrawl_Metabox::run();
113
- Smartcrawl_Taxonomy::run();
114
- }
115
-
116
- Smartcrawl_Compatibility::run();
117
  }
118
 
119
  /**
@@ -313,7 +297,7 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
313
  continue;
314
  }
315
 
316
- $optional_nodes[] = $this->create_admin_bar_node( $handler->slug, $handler->title );
317
  }
318
 
319
  if ( ! empty( $optional_nodes ) ) {
@@ -365,6 +349,8 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
365
  * Validate user data for some/all of your input fields
366
  *
367
  * @param mixed $input Raw input.
 
 
368
  */
369
  public function validate( $input ) {
370
  return $input; // return validated input.
@@ -407,105 +393,15 @@ class Smartcrawl_Admin extends Smartcrawl_Renderable {
407
  wp_send_json_success();
408
  }
409
 
410
- /**
411
- * Process user search requests
412
- */
413
- public function json_user_search() {
414
- $result = array( 'success' => false );
415
- if ( ! current_user_can( 'edit_users' ) ) {
416
- wp_send_json( $result );
417
- die;
418
- }
419
-
420
- $params = $this->get_request_data();
421
- $query = sanitize_text_field( smartcrawl_get_array_value( $params, 'query' ) );
422
-
423
- if ( ! $query ) {
424
- wp_send_json( $result );
425
- die();
426
- }
427
-
428
- $users = get_users( array(
429
- 'search' => '*' . $params['query'] . '*',
430
- 'fields' => 'all_with_meta',
431
- ) );
432
-
433
- $return_users = array();
434
- foreach ( $users as $user ) {
435
- $return_users[] = array(
436
- 'id' => $user->get( 'ID' ),
437
- 'text' => $user->get( 'display_name' ),
438
- );
439
- }
440
- $result['items'] = $return_users;
441
-
442
- wp_send_json( $result );
443
- }
444
-
445
- /**
446
- * Handles user search requests
447
- */
448
- public function json_user_search_add_user() {
449
- $result = array( 'success' => false );
450
- if ( ! current_user_can( 'edit_users' ) ) {
451
- wp_send_json( $result );
452
- die;
453
- }
454
-
455
- $params = $this->get_request_data();
456
-
457
- $option_name = sanitize_key( smartcrawl_get_array_value( $params, 'option_name' ) );
458
- $users_key = sanitize_key( smartcrawl_get_array_value( $params, 'users_key' ) );
459
- $new_user_key = sanitize_key( smartcrawl_get_array_value( $params, 'new_user_key' ) );
460
-
461
- $user_search_options = smartcrawl_get_array_value( $params, $option_name );
462
- $email_recipients = smartcrawl_get_array_value( $user_search_options, $users_key );
463
- $new_user = sanitize_text_field( smartcrawl_get_array_value( $user_search_options, $new_user_key ) );
464
-
465
- if ( null === $new_user ) {
466
- wp_send_json( $result );
467
-
468
- return;
469
- }
470
-
471
- if ( ! is_array( $email_recipients ) ) {
472
- $email_recipients = array();
473
- } else {
474
- $email_recipients = array_filter( array_map( 'sanitize_text_field', $email_recipients ) );
475
- }
476
-
477
- if ( ! in_array( $new_user, $email_recipients, true ) ) {
478
- $email_recipients[] = $new_user;
479
- }
480
-
481
- $new_markup = $this->_load( 'user-search', array(
482
- 'users' => $email_recipients,
483
- 'option_name' => $option_name,
484
- 'users_key' => $users_key,
485
- 'new_user_key' => $new_user_key,
486
- ) );
487
-
488
- $result['user_search'] = $new_markup;
489
- $result['success'] = true;
490
-
491
- wp_send_json( $result );
492
- }
493
-
494
  public function enqueue_dashboard_resources() {
495
- wp_enqueue_style( 'wds-wp-dashboard', SMARTCRAWL_PLUGIN_URL . 'css/wp-dashboard.css', array(), Smartcrawl_Loader::get_version() );
496
  }
497
 
498
- /**
499
- * Gets inherited view defaults
500
- */
501
- protected function _get_view_defaults() {
502
- return array();
503
  }
504
 
505
  private function get_request_data() {
506
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-admin-nonce' ) ? stripslashes_deep( $_POST ) : array();
507
  }
508
  }
509
-
510
- $smartcrawl_admin = new Smartcrawl_Admin();
511
-
8
  /**
9
  * Admin handling root class
10
  */
11
+ class Smartcrawl_Admin extends Smartcrawl_Base_Controller {
12
+ /**
13
+ * Static instance
14
+ *
15
+ * @var self
16
+ */
17
+ private static $_instance;
18
 
19
  /**
20
  * Admin page handlers
24
  private $_handlers = array();
25
 
26
  /**
27
+ * Static instance getter
28
  */
29
+ public static function get() {
30
+ if ( empty( self::$_instance ) ) {
31
+ self::$_instance = new self();
32
+ }
33
+
34
+ return self::$_instance;
35
  }
36
 
37
  /**
38
  * Initializing method
39
  */
40
+ protected function init() {
41
  // Set up dash.
42
  if ( file_exists( SMARTCRAWL_PLUGIN_DIR . 'external/dash/wpmudev-dash-notification.php' ) ) {
43
  global $wpmudev_notices;
69
  add_filter( 'load-index.php', array( $this, 'enqueue_dashboard_resources' ), 20 );
70
 
71
  add_action( 'wp_ajax_wds_dismiss_message', array( $this, 'smartcrawl_dismiss_message' ) );
 
 
72
 
73
  if ( Smartcrawl_Settings::get_setting( 'extras-admin_bar' ) ) {
74
  add_action( 'admin_bar_menu', array( $this, 'add_toolbar_items' ), 99 );
76
 
77
  add_filter( 'plugin_action_links_' . SMARTCRAWL_PLUGIN_BASENAME, array( $this, 'add_settings_link' ) );
78
 
 
 
79
  // Sanity check first!
80
  if ( ! get_option( 'blog_public' ) ) {
81
  add_action( 'admin_notices', array( $this, 'blog_not_public_notice' ) );
82
  }
83
 
 
 
 
 
 
84
  $this->_handlers['dashboard'] = Smartcrawl_Settings_Dashboard::get_instance();
85
 
86
  if ( Smartcrawl_Settings::get_setting( 'checkup' ) ) {
96
  }
97
 
98
  $this->_handlers['sitemap'] = Smartcrawl_Sitemap_Settings::get_instance();
 
 
 
 
 
99
  $this->_handlers['autolinks'] = Smartcrawl_Autolinks_Settings::get_instance();
 
100
  $this->_handlers['settings'] = Smartcrawl_Settings_Settings::get_instance();
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
 
103
  /**
297
  continue;
298
  }
299
 
300
+ $optional_nodes[] = $this->create_admin_bar_node( $handler->slug, $handler->get_title() );
301
  }
302
 
303
  if ( ! empty( $optional_nodes ) ) {
349
  * Validate user data for some/all of your input fields
350
  *
351
  * @param mixed $input Raw input.
352
+ *
353
+ * @return mixed
354
  */
355
  public function validate( $input ) {
356
  return $input; // return validated input.
393
  wp_send_json_success();
394
  }
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  public function enqueue_dashboard_resources() {
397
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_css' ) );
398
  }
399
 
400
+ function enqueue_dashboard_css() {
401
+ wp_enqueue_style( Smartcrawl_Controller_Assets::WP_DASHBOARD_CSS );
 
 
 
402
  }
403
 
404
  private function get_request_data() {
405
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-admin-nonce' ) ? stripslashes_deep( $_POST ) : array();
406
  }
407
  }
 
 
 
includes/admin/class-wds-autolinks-ui.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_Autolinks_UI extends Smartcrawl_Base_Controller {
4
+
5
+ /**
6
+ * Static instance
7
+ *
8
+ * @var Smartcrawl_OnPage
9
+ */
10
+ private static $_instance;
11
+
12
+ /**
13
+ * Static instance getter
14
+ */
15
+ public static function get() {
16
+ if ( empty( self::$_instance ) ) {
17
+ self::$_instance = new self();
18
+ }
19
+
20
+ return self::$_instance;
21
+ }
22
+
23
+ public function should_run() {
24
+ return smartcrawl_is_allowed_tab( Smartcrawl_Settings::TAB_AUTOLINKS );
25
+ }
26
+
27
+ /**
28
+ * Child controllers can use this method to initialize.
29
+ *
30
+ * @return mixed
31
+ */
32
+ protected function init() {
33
+ add_filter( 'wds-sections-metabox-advanced', array( $this, 'add_advanced_metabox_redirects_section' ), 20, 2 );
34
+
35
+ if ( Smartcrawl_Settings::get_setting( 'autolinks' ) ) {
36
+ add_filter( 'wds-sections-metabox-advanced', array(
37
+ $this,
38
+ 'add_advanced_metabox_autolinks_section',
39
+ ), 40, 2 );
40
+ }
41
+
42
+ return true;
43
+ }
44
+
45
+ /**
46
+ * @param $sections
47
+ * @param WP_Post $post
48
+ */
49
+ public function add_advanced_metabox_redirects_section( $sections, $post = null ) {
50
+ if ( empty( $post ) ) {
51
+ return $sections;
52
+ }
53
+
54
+ $post_id = $post->ID;
55
+ $sections['metabox/metabox-advanced-redirect'] = array(
56
+ 'redirect_url' => smartcrawl_get_value( 'redirect', $post_id ),
57
+ 'has_permission' => user_can_see_seo_metabox_301_redirect(),
58
+ );
59
+
60
+ return $sections;
61
+ }
62
+
63
+ /**
64
+ * @param $sections
65
+ * @param WP_Post $post
66
+ */
67
+ public function add_advanced_metabox_autolinks_section( $sections, $post = null ) {
68
+ if ( empty( $post ) ) {
69
+ return $sections;
70
+ }
71
+
72
+ $post_id = $post->ID;
73
+ $sections['metabox/metabox-advanced-autolinks'] = array(
74
+ 'autolinks_exclude' => smartcrawl_get_value( 'autolinks-exclude', $post_id ),
75
+ );
76
+
77
+ return $sections;
78
+ }
79
+ }
includes/admin/class-wds-onpage-ui.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_OnPage_UI extends Smartcrawl_Base_Controller {
4
+
5
+ /**
6
+ * Static instance
7
+ *
8
+ * @var self
9
+ */
10
+ private static $_instance;
11
+
12
+ /**
13
+ * Static instance getter
14
+ */
15
+ public static function get() {
16
+ if ( empty( self::$_instance ) ) {
17
+ self::$_instance = new self();
18
+ }
19
+
20
+ return self::$_instance;
21
+ }
22
+
23
+ public function should_run() {
24
+ return Smartcrawl_Settings::get_setting( 'onpage' )
25
+ && smartcrawl_is_allowed_tab( Smartcrawl_Settings::TAB_ONPAGE );
26
+ }
27
+
28
+ /**
29
+ * Child controllers can use this method to initialize.
30
+ *
31
+ * @return mixed
32
+ */
33
+ protected function init() {
34
+ add_filter( 'wds-sections-metabox-seo', array( $this, 'add_seo_meta_fields' ), 10, 2 );
35
+ add_filter( 'wds-sections-metabox-advanced', array( $this, 'add_advanced_metabox_settings_section' ), 10, 2 );
36
+
37
+ return true;
38
+ }
39
+
40
+ public function add_seo_meta_fields( $sections, $post = null ) {
41
+ if ( empty( $post ) ) {
42
+ return $sections;
43
+ }
44
+
45
+ wp_enqueue_script( Smartcrawl_Controller_Assets::METABOX_ONPAGE_JS );
46
+
47
+ $sections['metabox/metabox-seo-meta'] = array(
48
+ 'post' => $post,
49
+ );
50
+
51
+ return $sections;
52
+ }
53
+
54
+ /**
55
+ * @param $sections
56
+ * @param WP_Post $post
57
+ */
58
+ public function add_advanced_metabox_settings_section( $sections, $post = null ) {
59
+ if ( empty( $post ) ) {
60
+ return $sections;
61
+ }
62
+
63
+ $all_options = Smartcrawl_Settings::get_options();
64
+ $post_id = $post->ID;
65
+ $sections['metabox/metabox-advanced-indexing'] = array(
66
+ 'robots_noindex_value' => (int) smartcrawl_get_value( 'meta-robots-noindex', $post_id ),
67
+ 'robots_nofollow_value' => (int) smartcrawl_get_value( 'meta-robots-nofollow', $post_id ),
68
+ 'robots_index_value' => (int) smartcrawl_get_value( 'meta-robots-index', $post_id ),
69
+ 'robots_follow_value' => (int) smartcrawl_get_value( 'meta-robots-follow', $post_id ),
70
+ 'advanced_value' => explode( ',', smartcrawl_get_value( 'meta-robots-adv', $post_id ) ),
71
+ 'post_type_noindexed' => (bool) smartcrawl_get_array_value( $all_options, sprintf( 'meta_robots-noindex-%s', get_post_type( $post ) ) ),
72
+ 'post_type_nofollowed' => (bool) smartcrawl_get_array_value( $all_options, sprintf( 'meta_robots-nofollow-%s', get_post_type( $post ) ) ),
73
+ );
74
+
75
+ $sections['metabox/metabox-advanced-canonical'] = array(
76
+ 'canonical_url' => smartcrawl_get_value( 'canonical', $post_id ),
77
+ );
78
+
79
+ return $sections;
80
+ }
81
+ }
includes/admin/class-wds-readability-analysis-ui.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_Readability_Analysis_UI extends Smartcrawl_Base_Controller {
4
+ /**
5
+ * Static instance
6
+ *
7
+ * @var self
8
+ */
9
+ private static $_instance;
10
+
11
+ /**
12
+ * Static instance getter
13
+ */
14
+ public static function get() {
15
+ if ( empty( self::$_instance ) ) {
16
+ self::$_instance = new self();
17
+ }
18
+
19
+ return self::$_instance;
20
+ }
21
+
22
+ public function should_run() {
23
+ return Smartcrawl_Settings::get_setting( 'analysis-readability' );
24
+ }
25
+
26
+ protected function init() {
27
+ add_filter( 'wds-sections-metabox-readability', array( $this, 'add_analysis_section' ), 10, 2 );
28
+ add_filter( 'wds-metabox-nav-item', array( $this, 'add_issue_count' ), 10, 2 );
29
+ }
30
+
31
+ public function add_analysis_section( $sections, $post = null ) {
32
+ if ( empty( $post ) ) {
33
+ return $sections;
34
+ }
35
+
36
+ wp_enqueue_script( Smartcrawl_Controller_Assets::METABOX_ANALYSIS_JS );
37
+
38
+ $sections['metabox/metabox-readability'] = array(
39
+ 'post' => $post,
40
+ );
41
+
42
+ return $sections;
43
+ }
44
+
45
+ public function add_issue_count( $tab_name, $tab_id ) {
46
+ return $tab_id === 'wds_readability'
47
+ ? $tab_name . '<span class="wds-issues"><span></span></span>'
48
+ : $tab_name;
49
+ }
50
+ }
includes/admin/class-wds-seo-analysis-ui.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_SEO_Analysis_UI extends Smartcrawl_Base_Controller {
4
+ /**
5
+ * Static instance
6
+ *
7
+ * @var self
8
+ */
9
+ private static $_instance;
10
+
11
+ /**
12
+ * Static instance getter
13
+ */
14
+ public static function get() {
15
+ if ( empty( self::$_instance ) ) {
16
+ self::$_instance = new self();
17
+ }
18
+
19
+ return self::$_instance;
20
+ }
21
+
22
+ public function should_run() {
23
+ return Smartcrawl_Settings::get_setting( 'analysis-seo' );
24
+ }
25
+
26
+ protected function init() {
27
+ add_filter( 'wds-sections-metabox-seo', array( $this, 'add_analysis_section' ), 10, 2 );
28
+ add_filter( 'wds-metabox-nav-item', array( $this, 'add_issue_count' ), 10, 2 );
29
+ }
30
+
31
+ public function add_analysis_section( $sections, $post = null ) {
32
+ if ( empty( $post ) ) {
33
+ return $sections;
34
+ }
35
+
36
+ wp_enqueue_script( Smartcrawl_Controller_Assets::METABOX_ANALYSIS_JS );
37
+
38
+ $sections['metabox/metabox-seo-analysis-container'] = array(
39
+ 'post' => $post,
40
+ );
41
+
42
+ return $sections;
43
+ }
44
+
45
+ public function add_issue_count( $tab_name, $tab_id ) {
46
+ return $tab_id === 'wds_seo'
47
+ ? $tab_name . '<span class="wds-issues"><span></span></span>'
48
+ : $tab_name;
49
+ }
50
+ }
includes/admin/class-wds-sitemap-ui.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_Sitemap_UI extends Smartcrawl_Base_Controller {
4
+ /**
5
+ * Static instance
6
+ *
7
+ * @var Smartcrawl_OnPage
8
+ */
9
+ private static $_instance;
10
+
11
+ /**
12
+ * Static instance getter
13
+ */
14
+ public static function get() {
15
+ if ( empty( self::$_instance ) ) {
16
+ self::$_instance = new self();
17
+ }
18
+
19
+ return self::$_instance;
20
+ }
21
+
22
+ public function should_run() {
23
+ return Smartcrawl_Settings::get_setting( 'sitemap' )
24
+ && smartcrawl_is_allowed_tab( Smartcrawl_Settings::TAB_SITEMAP );
25
+ }
26
+
27
+ /**
28
+ * Child controllers can use this method to initialize.
29
+ *
30
+ * @return mixed
31
+ */
32
+ protected function init() {
33
+ if ( Smartcrawl_Settings::get_setting( 'sitemap' ) ) {
34
+ add_filter( 'wds-sections-metabox-advanced', array(
35
+ $this,
36
+ 'add_advanced_metabox_settings_section',
37
+ ), 30, 2 );
38
+ }
39
+
40
+ return true;
41
+ }
42
+
43
+ /**
44
+ * @param $sections
45
+ * @param WP_Post $post
46
+ */
47
+ public function add_advanced_metabox_settings_section( $sections, $post = null ) {
48
+ if ( empty( $post ) ) {
49
+ return $sections;
50
+ }
51
+
52
+ $post_id = $post->ID;
53
+ $sections['metabox/metabox-advanced-sitemap-priority'] = array(
54
+ 'sitemap_priority_options' => array(
55
+ '' => __( 'Automatic prioritization', 'wds' ),
56
+ '1' => __( '1 - Highest priority', 'wds' ),
57
+ '0.9' => '0.9',
58
+ '0.8' => '0.8 - ' . __( 'High priority (root pages default)', 'wds' ),
59
+ '0.7' => '0.7',
60
+ '0.6' => '0.6 - ' . __( 'Secondary priority (subpages default)', 'wds' ),
61
+ '0.5' => '0.5 - ' . __( 'Medium priority', 'wds' ),
62
+ '0.4' => '0.4',
63
+ '0.3' => '0.3',
64
+ '0.2' => '0.2',
65
+ '0.1' => '0.1 - ' . __( 'Lowest priority', 'wds' ),
66
+ ),
67
+ 'sitemap_priority' => smartcrawl_get_value( 'sitemap-priority', $post_id ),
68
+ );
69
+
70
+ return $sections;
71
+ }
72
+ }
includes/admin/class-wds-social-ui.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Smartcrawl_Social_UI extends Smartcrawl_Base_Controller {
4
+ /**
5
+ * Static instance
6
+ *
7
+ * @var self
8
+ */
9
+ private static $_instance;
10
+
11
+ /**
12
+ * Static instance getter
13
+ */
14
+ public static function get() {
15
+ if ( empty( self::$_instance ) ) {
16
+ self::$_instance = new self();
17
+ }
18
+
19
+ return self::$_instance;
20
+ }
21
+
22
+ public function should_run() {
23
+ return Smartcrawl_Settings::get_setting( 'social' )
24
+ && smartcrawl_is_allowed_tab( Smartcrawl_Settings::TAB_SOCIAL );
25
+ }
26
+
27
+ protected function init() {
28
+ add_filter( 'wds-sections-metabox-social', array( $this, 'add_social_sections' ), 10, 2 );
29
+ }
30
+
31
+ public function add_social_sections( $sections, $post = null ) {
32
+ if ( empty( $post ) ) {
33
+ return $sections;
34
+ }
35
+
36
+ $all_options = Smartcrawl_Settings::get_options();
37
+ $og_setting_enabled = (bool) smartcrawl_get_array_value( $all_options, 'og-enable' );
38
+ $og_post_type_enabled = (bool) smartcrawl_get_array_value( $all_options, 'og-active-' . get_post_type( $post ) );
39
+ if ( $og_setting_enabled && $og_post_type_enabled ) {
40
+ $sections['metabox/metabox-social-opengraph'] = array(
41
+ 'post' => $post,
42
+ );
43
+ }
44
+
45
+ $twitter_post_type_enabled = (bool) smartcrawl_get_array_value( $all_options, 'twitter-active-' . get_post_type( $post ) );
46
+ $twitter_setting_enabled = (bool) smartcrawl_get_array_value( $all_options, 'twitter-card-enable' );
47
+ if ( $twitter_post_type_enabled && $twitter_setting_enabled ) {
48
+ $sections['metabox/metabox-social-twitter'] = array(
49
+ 'post' => $post,
50
+ );
51
+ }
52
+
53
+ return $sections;
54
+ }
55
+ }
includes/admin/metabox.php CHANGED
@@ -8,7 +8,7 @@
8
  /**
9
  * Metabox rendering / handling class
10
  */
11
- class Smartcrawl_Metabox extends Smartcrawl_Renderable {
12
 
13
  /**
14
  * Static instance
@@ -17,31 +17,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
17
  */
18
  private static $_instance;
19
 
20
- /**
21
- * State flag
22
- *
23
- * @var bool
24
- */
25
- private $_is_running = false;
26
-
27
- /**
28
- * Constructor
29
- */
30
- public function __construct() {
31
- }
32
-
33
- /**
34
- * Boot the hooking part
35
- */
36
- public static function run() {
37
- self::get()->_add_hooks();
38
- }
39
-
40
- public function _add_hooks() {
41
- if ( $this->_is_running ) {
42
- return false;
43
- }
44
-
45
  // WPSC integration.
46
  add_action( 'wpsc_edit_product', array( $this, 'rebuild_sitemap' ) );
47
  add_action( 'wpsc_rate_product', array( $this, 'rebuild_sitemap' ) );
@@ -70,7 +46,21 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
70
  * since they are used together so frequently
71
  */
72
 
73
- $this->_is_running = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
 
76
  /**
@@ -107,7 +97,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
107
  ? smartcrawl_get_latest_post_version( $post_id )
108
  : get_post( $post_id );
109
  $result['success'] = true;
110
- $result['markup'] = $this->_load( 'metabox/metabox-preview', array(
111
  'post' => $post_to_preview,
112
  ) );
113
 
@@ -118,39 +108,15 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
118
  * Enqueues frontend dependencies
119
  */
120
  public function js_load_scripts() {
121
- $options = Smartcrawl_Settings::get_options();
122
- $version = Smartcrawl_Loader::get_version();
123
-
124
- wp_enqueue_script( 'wds_metabox_counter', SMARTCRAWL_PLUGIN_URL . '/js/wds-metabox-counter.js', array(), $version );
125
- wp_localize_script( 'wds_metabox_counter', 'l10nWdsCounters', array(
126
- 'title_length' => __( '{TOTAL_LEFT} characters left', 'wds' ),
127
- 'title_longer' => __( 'Over {MAX_COUNT} characters ({CURRENT_COUNT})', 'wds' ),
128
- 'main_title_longer' => __( 'Over {MAX_COUNT} characters ({CURRENT_COUNT}) - make sure your SEO title is shorter', 'wds' ),
129
-
130
- 'title_limit' => SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT,
131
- 'metad_limit' => SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT,
132
- 'main_title_warning' => ! ( defined( 'SMARTCRAWL_MAIN_TITLE_LENGTH_WARNING_HIDE' ) && SMARTCRAWL_MAIN_TITLE_LENGTH_WARNING_HIDE ),
133
- 'lax_enforcement' => ( isset( $options['metabox-lax_enforcement'] ) ? ! ! $options['metabox-lax_enforcement'] : false ),
134
- ) );
135
- Smartcrawl_Settings_Admin::register_global_admin_scripts();
136
- wp_enqueue_script( 'wds_metabox_onpage', SMARTCRAWL_PLUGIN_URL . '/js/wds-metabox.js', array(
137
- 'underscore',
138
- 'wds-select2',
139
- ), $version );
140
- wp_localize_script( 'wds_metabox_onpage', '_wds_metabox', array(
141
- 'nonce' => wp_create_nonce( 'wds-metabox-nonce' ),
142
- ) );
143
- wp_localize_script( 'wds_metabox_onpage', 'l10nWdsMetabox', array(
144
- 'content_analysis_working' => __( 'Analyzing content, please wait a few moments', 'wds' ),
145
- ) );
146
 
147
- Smartcrawl_Settings_Admin::enqueue_shared_ui( false );
148
 
149
  wp_enqueue_media();
150
- wp_enqueue_script( 'wds-admin-opengraph' );
151
- wp_enqueue_style( 'wds-admin-opengraph' );
152
- wp_enqueue_style( 'wds-select2' );
153
- wp_enqueue_style( 'wds-app' );
154
  }
155
 
156
  /**
@@ -166,42 +132,12 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
166
 
167
  /**
168
  * Handles actual metabox rendering
 
 
169
  */
170
  public function smartcrawl_meta_boxes( $post ) {
171
- $robots_noindex_value = (int) smartcrawl_get_value( 'meta-robots-noindex' );
172
- $robots_nofollow_value = (int) smartcrawl_get_value( 'meta-robots-nofollow' );
173
- $robots_index_value = (int) smartcrawl_get_value( 'meta-robots-index' );
174
- $robots_follow_value = (int) smartcrawl_get_value( 'meta-robots-follow' );
175
- $advanced_value = explode( ',', smartcrawl_get_value( 'meta-robots-adv' ) );
176
- $advanced_options = array(
177
- 'noodp' => __( 'NO ODP (Block Open Directory Project description of the page)', 'wds' ),
178
- 'noydir' => __( 'NO YDIR (Don\'t display the Yahoo! Directory titles and abstracts)', 'wds' ),
179
- 'noarchive' => __( 'No Archive', 'wds' ),
180
- 'nosnippet' => __( 'No Snippet', 'wds' ),
181
- );
182
- $sitemap_priority_options = array(
183
- '' => __( 'Automatic prioritization', 'wds' ),
184
- '1' => __( '1 - Highest priority', 'wds' ),
185
- '0.9' => '0.9',
186
- '0.8' => '0.8 - ' . __( 'High priority (root pages default)', 'wds' ),
187
- '0.7' => '0.7',
188
- '0.6' => '0.6 - ' . __( 'Secondary priority (subpages default)', 'wds' ),
189
- '0.5' => '0.5 - ' . __( 'Medium priority', 'wds' ),
190
- '0.4' => '0.4',
191
- '0.3' => '0.3',
192
- '0.2' => '0.2',
193
- '0.1' => '0.1 - ' . __( 'Lowest priority', 'wds' ),
194
- );
195
-
196
- $this->_render( 'metabox/metabox-main', array(
197
- 'post' => $post,
198
- 'robots_noindex_value' => $robots_noindex_value,
199
- 'robots_nofollow_value' => $robots_nofollow_value,
200
- 'robots_index_value' => $robots_index_value,
201
- 'robots_follow_value' => $robots_follow_value,
202
- 'advanced_value' => $advanced_value,
203
- 'advanced_options' => $advanced_options,
204
- 'sitemap_priority_options' => $sitemap_priority_options,
205
  ) );
206
  }
207
 
@@ -218,7 +154,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
218
  'public' => true, // ... and is public
219
  ) );
220
  foreach ( $post_types as $posttype ) {
221
- if ( 'attachment' === $posttype ) {
222
  continue;
223
  }
224
  if ( $show ) {
@@ -301,10 +237,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
301
  $result['disabled'] = true;
302
  }
303
  if ( ! empty( $input['title'] ) ) {
304
- $result['title'] = sanitize_text_field( $input['title'] );
305
  }
306
  if ( ! empty( $input['description'] ) ) {
307
- $result['description'] = sanitize_text_field( $input['description'] );
308
  }
309
  if ( ! empty( $input['images'] ) && is_array( $input['images'] ) ) {
310
  $result['images'] = array();
@@ -330,10 +266,10 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
330
  $twitter['disabled'] = true;
331
  }
332
  if ( ! empty( $input['title'] ) ) {
333
- $twitter['title'] = sanitize_text_field( $input['title'] );
334
  }
335
  if ( ! empty( $input['description'] ) ) {
336
- $twitter['description'] = sanitize_text_field( $input['description'] );
337
  }
338
  if ( ! empty( $input['images'] ) && is_array( $input['images'] ) ) {
339
  $twitter['images'] = array();
@@ -355,7 +291,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
355
  if ( trim( $focus ) === '' ) {
356
  delete_post_meta( $post_id, '_wds_focus-keywords' );
357
  } else {
358
- update_post_meta( $post_id, '_wds_focus-keywords', sanitize_text_field( $focus ) );
359
  }
360
  }
361
 
@@ -376,7 +312,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
376
  if ( $data ) {
377
  $value = in_array( $key, array( 'wds_canonical', 'wds_redirect' ), true )
378
  ? esc_url_raw( $data )
379
- : sanitize_text_field( $data );
380
  update_post_meta( $post_id, $id, $value );
381
  } else {
382
  delete_post_meta( $post_id, $id );
@@ -418,7 +354,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
418
  * @return array
419
  */
420
  public function smartcrawl_page_title_column_heading( $columns ) {
421
- $title_idx = array_search( 'title', array_keys( $columns ) );
422
  $title_idx = ! empty( $title_idx ) ? $title_idx + 1 : 2;
423
  return array_merge(
424
  array_slice( $columns, 0, $title_idx ),
@@ -491,17 +427,13 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
491
  */
492
  public function smartcrawl_page_title( $postid ) {
493
  $post = get_post( $postid );
494
- $fixed_title = smartcrawl_get_value( 'title', $post->ID );
495
- if ( $fixed_title ) {
496
- return smartcrawl_replace_vars( $fixed_title, (array) $post );
497
- } else {
498
- $smartcrawl_options = Smartcrawl_Settings::get_options();
499
- if ( ! empty( $smartcrawl_options[ 'title-' . $post->post_type ] ) ) {
500
- return smartcrawl_replace_vars( $smartcrawl_options[ 'title-' . $post->post_type ], (array) $post );
501
- } else {
502
- return '';
503
- }
504
- }
505
  }
506
 
507
  /**
@@ -516,6 +448,8 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
516
  return $this->_title_qe_box( $type );
517
  case 'page-meta-robots':
518
  return $this->_robots_qe_box();
 
 
519
  }
520
  }
521
 
@@ -524,7 +458,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
524
  */
525
  private function _title_qe_box() {
526
  global $post;
527
- $this->_render( 'quick-edit-title', array(
528
  'post' => $post,
529
  ) );
530
  }
@@ -534,7 +468,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
534
  */
535
  private function _robots_qe_box() {
536
  global $post;
537
- $this->_render( 'quick-edit-robots', array(
538
  'post' => $post,
539
  ) );
540
  }
@@ -543,7 +477,7 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
543
  * Inject the quick editing javascript
544
  */
545
  public function smartcrawl_quick_edit_javascript() {
546
- $this->_render( 'quick-edit-javascript' );
547
  }
548
 
549
  /**
@@ -554,8 +488,8 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
554
  $id = (int) $data['id'];
555
  $post = get_post( $id );
556
  die( wp_json_encode( array(
557
- 'title' => smartcrawl_replace_vars( smartcrawl_get_value( 'title', $id ), (array) $post ),
558
- 'description' => smartcrawl_replace_vars( smartcrawl_get_value( 'metadesc', $id ), (array) $post ),
559
  'focus' => smartcrawl_get_value( 'focus-keywords', $id ),
560
  'keywords' => smartcrawl_get_value( 'keywords', $id ),
561
  ) ) );
@@ -595,13 +529,68 @@ class Smartcrawl_Metabox extends Smartcrawl_Renderable {
595
  }
596
 
597
  /**
598
- * Sattisfy interface
 
599
  */
600
- protected function _get_view_defaults() {
601
- return array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
602
  }
603
 
604
  private function get_request_data() {
605
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-metabox-nonce' ) ? stripslashes_deep( $_POST ) : array();
606
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  }
8
  /**
9
  * Metabox rendering / handling class
10
  */
11
+ class Smartcrawl_Metabox extends Smartcrawl_Base_Controller {
12
 
13
  /**
14
  * Static instance
17
  */
18
  private static $_instance;
19
 
20
+ protected function init() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  // WPSC integration.
22
  add_action( 'wpsc_edit_product', array( $this, 'rebuild_sitemap' ) );
23
  add_action( 'wpsc_rate_product', array( $this, 'rebuild_sitemap' ) );
46
  * since they are used together so frequently
47
  */
48
 
49
+ /*
50
+ * When running analysis in metabox, or rendering metabox preview,
51
+ * always use overriding values passed in the request before values saved in the DB.
52
+ *
53
+ * This is done by filtering the metadata.
54
+ */
55
+ add_filter( 'get_post_metadata', array( $this, 'filter_meta_title' ), 10, 3 );
56
+ add_filter( 'get_post_metadata', array( $this, 'filter_meta_desc' ), 10, 3 );
57
+ add_filter( 'get_post_metadata', array( $this, 'filter_focus_keyword' ), 10, 3 );
58
+
59
+ /**
60
+ * Similar for taxonomy meta
61
+ */
62
+ add_filter( 'wds-taxonomy-meta-wds_title', array( $this, 'filter_term_meta_title' ) );
63
+ add_filter( 'wds-taxonomy-meta-wds_desc', array( $this, 'filter_term_meta_desc' ) );
64
  }
65
 
66
  /**
97
  ? smartcrawl_get_latest_post_version( $post_id )
98
  : get_post( $post_id );
99
  $result['success'] = true;
100
+ $result['markup'] = Smartcrawl_Simple_Renderer::load( 'metabox/metabox-preview', array(
101
  'post' => $post_to_preview,
102
  ) );
103
 
108
  * Enqueues frontend dependencies
109
  */
110
  public function js_load_scripts() {
111
+ if ( $this->is_editing_private_post_type() ) {
112
+ return;
113
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
+ wp_enqueue_script( Smartcrawl_Controller_Assets::METABOX_JS );
116
 
117
  wp_enqueue_media();
118
+
119
+ wp_enqueue_style( Smartcrawl_Controller_Assets::APP_CSS );
 
 
120
  }
121
 
122
  /**
132
 
133
  /**
134
  * Handles actual metabox rendering
135
+ *
136
+ * @param $post
137
  */
138
  public function smartcrawl_meta_boxes( $post ) {
139
+ Smartcrawl_Simple_Renderer::render( 'metabox/metabox-main', array(
140
+ 'post' => $post,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  ) );
142
  }
143
 
154
  'public' => true, // ... and is public
155
  ) );
156
  foreach ( $post_types as $posttype ) {
157
+ if ( $this->is_private_post_type( $posttype ) ) {
158
  continue;
159
  }
160
  if ( $show ) {
237
  $result['disabled'] = true;
238
  }
239
  if ( ! empty( $input['title'] ) ) {
240
+ $result['title'] = smartcrawl_sanitize_preserve_macros( $input['title'] );
241
  }
242
  if ( ! empty( $input['description'] ) ) {
243
+ $result['description'] = smartcrawl_sanitize_preserve_macros( $input['description'] );
244
  }
245
  if ( ! empty( $input['images'] ) && is_array( $input['images'] ) ) {
246
  $result['images'] = array();
266
  $twitter['disabled'] = true;
267
  }
268
  if ( ! empty( $input['title'] ) ) {
269
+ $twitter['title'] = smartcrawl_sanitize_preserve_macros( $input['title'] );
270
  }
271
  if ( ! empty( $input['description'] ) ) {
272
+ $twitter['description'] = smartcrawl_sanitize_preserve_macros( $input['description'] );
273
  }
274
  if ( ! empty( $input['images'] ) && is_array( $input['images'] ) ) {
275
  $twitter['images'] = array();
291
  if ( trim( $focus ) === '' ) {
292
  delete_post_meta( $post_id, '_wds_focus-keywords' );
293
  } else {
294
+ update_post_meta( $post_id, '_wds_focus-keywords', smartcrawl_sanitize_preserve_macros( $focus ) );
295
  }
296
  }
297
 
312
  if ( $data ) {
313
  $value = in_array( $key, array( 'wds_canonical', 'wds_redirect' ), true )
314
  ? esc_url_raw( $data )
315
+ : smartcrawl_sanitize_preserve_macros( $data );
316
  update_post_meta( $post_id, $id, $value );
317
  } else {
318
  delete_post_meta( $post_id, $id );
354
  * @return array
355
  */
356
  public function smartcrawl_page_title_column_heading( $columns ) {
357
+ $title_idx = array_search( 'title', array_keys( $columns ), true );
358
  $title_idx = ! empty( $title_idx ) ? $title_idx + 1 : 2;
359
  return array_merge(
360
  array_slice( $columns, 0, $title_idx ),
427
  */
428
  public function smartcrawl_page_title( $postid ) {
429
  $post = get_post( $postid );
430
+ $resolver = Smartcrawl_Endpoint_Resolver::resolve();
431
+
432
+ $resolver->simulate_post( $post );
433
+ $title = Smartcrawl_Meta_Value_Helper::get()->get_title();
434
+ $resolver->stop_simulation();
435
+
436
+ return $title;
 
 
 
 
437
  }
438
 
439
  /**
448
  return $this->_title_qe_box( $type );
449
  case 'page-meta-robots':
450
  return $this->_robots_qe_box();
451
+ default:
452
+ break;
453
  }
454
  }
455
 
458
  */
459
  private function _title_qe_box() {
460
  global $post;
461
+ Smartcrawl_Simple_Renderer::render( 'quick-edit-title', array(
462
  'post' => $post,
463
  ) );
464
  }
468
  */
469
  private function _robots_qe_box() {
470
  global $post;
471
+ Smartcrawl_Simple_Renderer::render( 'quick-edit-robots', array(
472
  'post' => $post,
473
  ) );
474
  }
477
  * Inject the quick editing javascript
478
  */
479
  public function smartcrawl_quick_edit_javascript() {
480
+ Smartcrawl_Simple_Renderer::render( 'quick-edit-javascript' );
481
  }
482
 
483
  /**
488
  $id = (int) $data['id'];
489
  $post = get_post( $id );
490
  die( wp_json_encode( array(
491
+ 'title' => smartcrawl_get_value( 'title', $id ),
492
+ 'description' => smartcrawl_get_value( 'metadesc', $id ),
493
  'focus' => smartcrawl_get_value( 'focus-keywords', $id ),
494
  'keywords' => smartcrawl_get_value( 'keywords', $id ),
495
  ) ) );
529
  }
530
 
531
  /**
532
+ * When we are rendering a preview, or refreshing analysis,
533
+ * we want to use the latest values from the request.
534
  */
535
+ public function filter_meta_title( $original, $post_id, $meta_key ) {
536
+ if ( $meta_key !== '_wds_title' ) {
537
+ return $original;
538
+ }
539
+
540
+ return $this->use_request_param_value( 'wds_title', $original );
541
+ }
542
+
543
+ public function filter_meta_desc( $original, $post_id, $meta_key ) {
544
+ if ( $meta_key !== '_wds_metadesc' ) {
545
+ return $original;
546
+ }
547
+
548
+ return $this->use_request_param_value( 'wds_description', $original );
549
+ }
550
+
551
+ public function filter_focus_keyword( $original, $post_id, $meta_key ) {
552
+ if ( $meta_key !== '_wds_focus-keywords' ) {
553
+ return $original;
554
+ }
555
+
556
+ return $this->use_request_param_value( 'wds_focus_keywords', $original );
557
+ }
558
+
559
+ public function filter_term_meta_title( $original ) {
560
+ return $this->use_request_param_value( 'wds_title', $original );
561
+ }
562
+
563
+ public function filter_term_meta_desc( $original ) {
564
+ return $this->use_request_param_value( 'wds_description', $original );
565
+ }
566
+
567
+ private function use_request_param_value( $request_param, $default ) {
568
+ $overridden = smartcrawl_get_array_value( $this->get_request_data(), $request_param );
569
+ if ( is_null( $overridden ) ) {
570
+ return $default;
571
+ }
572
+
573
+ return Smartcrawl_Replacement_Helper::replace( $overridden );
574
  }
575
 
576
  private function get_request_data() {
577
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-metabox-nonce' ) ? stripslashes_deep( $_POST ) : array();
578
  }
579
+
580
+ private function is_private_post_type( $post_type_name ) {
581
+ $post_type = get_post_type_object( $post_type_name );
582
+
583
+ return $post_type->name === 'attachment'
584
+ || ! $post_type->show_ui
585
+ || ! $post_type->public;
586
+ }
587
+
588
+ private function is_editing_private_post_type() {
589
+ $current_screen = get_current_screen();
590
+ if ( empty( $current_screen->post_type ) ) {
591
+ return false;
592
+ }
593
+
594
+ return $this->is_private_post_type( $current_screen->post_type );
595
+ }
596
  }
includes/admin/settings.php CHANGED
@@ -103,8 +103,7 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
103
 
104
  add_action( 'init', array( $this, 'defaults' ), 999 );
105
  add_action( 'admin_body_class', array( $this, 'add_body_class' ), 20 );
106
-
107
- add_action( 'admin_init', array( $this, 'save_last_active_tab' ) );
108
 
109
  if ( is_multisite() ) {
110
  add_action( 'network_admin_menu', array( $this, 'add_page' ) );
@@ -115,6 +114,37 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
115
 
116
  }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  /**
119
  * Unified admin tab URL getter
120
  *
@@ -175,7 +205,7 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
175
  $this->smartcrawl_page_hook = add_submenu_page(
176
  'wds_wizard',
177
  $this->page_title,
178
- $this->title,
179
  $this->capability,
180
  $this->slug,
181
  array( $this, 'options_page' )
@@ -186,13 +216,11 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
186
  add_action( 'load-' . $this->smartcrawl_page_hook, array( $this, 'process_run_action' ) );
187
  }
188
 
189
- add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
190
-
191
  add_action( "admin_print_styles-{$this->smartcrawl_page_hook}", array( $this, 'admin_styles' ) );
192
- add_action( "admin_print_scripts-{$this->smartcrawl_page_hook}", array( $this, 'admin_scripts' ) );
193
-
194
  }
195
 
 
 
196
  /**
197
  * Check if the current tab (settings page) is allowed for access
198
  *
@@ -235,334 +263,24 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
235
  return false;
236
  }
237
 
238
- return in_array( $tab, array_keys( $allowed ), true ) && ! empty( $allowed[ $tab ] );
239
- }
240
-
241
- /**
242
- * Registers the known scripts on admin side.
243
- */
244
- public function register_admin_scripts() {
245
- // Do the globals first.
246
- self::register_global_admin_scripts();
247
-
248
- $version = Smartcrawl_Loader::get_version();
249
- if ( class_exists( 'Smartcrawl_Onpage_Settings' ) && ! wp_script_is( 'wds-admin-macros', 'registered' ) ) {
250
- wp_register_script( 'wds-admin-macros', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-macros.js', array(
251
- 'underscore',
252
- 'jquery',
253
- 'wds-admin',
254
- ), $version );
255
- wp_localize_script( 'wds-admin-macros', '_wds_macros', array(
256
- 'macros' => Smartcrawl_Onpage_Settings::get_macros(),
257
- 'templates' => array(
258
- 'list' => $this->_load( 'onpage/underscore-macros-list' ),
259
- ),
260
- 'strings' => array(
261
- 'Insert dynamic macro' => __( 'Insert dynamic macro', 'wds' ),
262
- ),
263
- ) );
264
- }
265
-
266
- if ( ! wp_script_is( 'wds-admin-keywords', 'registered' ) ) {
267
- wp_register_script( 'wds-admin-keywords', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-keywords.js', array(
268
- 'underscore',
269
- 'jquery',
270
- 'wds-admin',
271
- ), $version );
272
- wp_localize_script( 'wds-admin-keywords', '_wds_keywords', array(
273
- 'templates' => array(
274
- 'custom' => $this->_load( 'advanced-tools/underscore-keywords-custom' ),
275
- 'pairs' => $this->_load( 'advanced-tools/underscore-keywords-pairs' ),
276
- 'form' => $this->_load( 'advanced-tools/underscore-keywords-form' ),
277
- ),
278
- 'strings' => array(
279
- 'Keyword' => __( 'Keyword', 'wds' ),
280
- 'Auto-Linked URL' => __( 'Auto-Linked URL', 'wds' ),
281
- 'Add New' => __( 'Add New', 'wds' ),
282
- 'Add Custom Keywords' => __( 'Add Custom Keywords', 'wds' ),
283
- 'Update Custom Keywords' => __( 'Update Custom Keywords', 'wds' ),
284
- 'Add' => __( 'Add', 'wds' ),
285
- 'Update' => __( 'Update', 'wds' ),
286
- 'Edit' => __( 'Edit', 'wds' ),
287
- 'Remove' => __( 'Remove', 'wds' ),
288
- 'E.g. Cats, Kittens, Felines' => __( 'E.g. Cats, Kittens, Felines', 'wds' ),
289
- 'E.g. /cats' => __( 'E.g. /cats', 'wds' ),
290
- 'Keyword group' => __( 'Keyword group', 'wds' ),
291
- '- Usually related terms' => __( '- Usually related terms', 'wds' ),
292
- 'Link URL' => __( 'Link URL', 'wds' ),
293
- 'internal-external-links-supported' => __( '- Both internal and external links are supported', 'wds' ),
294
- 'choose-your-keywords-and-url' => __( 'Choose your keywords, and then specify the URL to auto-link to.', 'wds' ),
295
- 'url-formats-explanation' => __( 'Formats include relative (E.g. <b>/cats</b>) or absolute URLs (E.g. <b>www.website.com/cats</b> or <b>https://website.com/cats</b>).', 'wds' ),
296
- 'Cancel' => __( 'Cancel', 'wds' ),
297
- ),
298
- ) );
299
- }
300
-
301
- if ( class_exists( 'Smartcrawl_Autolinks_Settings' ) && ! wp_script_is( 'wds-admin-postlist', 'registered' ) ) {
302
- wp_register_script( 'wds-admin-postlist', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-postlist.js', array(
303
- 'underscore',
304
- 'jquery',
305
- 'wds-admin',
306
- ), $version );
307
- wp_localize_script( 'wds-admin-postlist', '_wds_postlist', array(
308
- 'templates' => array(
309
- 'exclude' => $this->_load( 'advanced-tools/underscore-postlist-exclusion' ),
310
- 'exclude-item' => $this->_load( 'advanced-tools/underscore-postlist-exclusion-item' ),
311
- 'selector' => $this->_load( 'advanced-tools/underscore-postlist-selector' ),
312
- 'selector-list' => $this->_load( 'advanced-tools/underscore-postlist-selector-list' ),
313
- 'selector-list-item' => $this->_load( 'advanced-tools/underscore-postlist-selector-list-item' ),
314
- ),
315
- 'post_types' => Smartcrawl_Autolinks_Settings::get_post_types(),
316
- 'strings' => array(
317
- 'Add Posts' => __( 'Add Posts', 'wds' ),
318
- 'Remove' => __( 'Remove', 'wds' ),
319
- 'Post' => __( 'Post', 'wds' ),
320
- 'Post Type' => __( 'Post Type', 'wds' ),
321
- 'Loading post items, please hold on' => __( 'Loading post items, please hold on...', 'wds' ),
322
- 'Jump to page' => __( 'Jump to page:', 'wds' ),
323
- 'Total Pages' => __( 'Total Pages:', 'wds' ),
324
- ),
325
- 'nonce' => wp_create_nonce( 'wds-autolinks-nonce' ),
326
- ) );
327
- }
328
-
329
- if ( class_exists( 'Smartcrawl_Autolinks_Settings' ) && ! wp_script_is( 'wds-admin-autolinks', 'registered' ) ) {
330
- wp_register_script( 'wds-admin-autolinks', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-autolinks.js', array(
331
- 'underscore',
332
- 'jquery',
333
- 'wds-admin',
334
- 'wds-select2',
335
- 'wds-select2-admin',
336
- 'wds-admin-keywords',
337
- 'wds-admin-postlist',
338
- ), $version );
339
- }
340
-
341
- if ( 'Smartcrawl_Autolinks_Settings' === get_class( $this ) && ! wp_script_is( 'wds-admin-redirects', 'registered' ) ) {
342
- wp_register_script( 'wds-admin-redirects', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-redirects.js', array(
343
- 'underscore',
344
- 'jquery',
345
- 'wds-admin',
346
- 'wds-select2',
347
- 'wds-select2-admin',
348
- ), $version );
349
-
350
- wp_localize_script( 'wds-admin-redirects', '_wds_redirects', array(
351
- 'templates' => array(
352
- 'redirect-item' => $this->_load( 'advanced-tools/underscore-redirect-item' ),
353
- 'update-form' => $this->_load( 'advanced-tools/underscore-bulk-update-form' ),
354
- ),
355
- 'strings' => array(
356
- 'Permanent (301)' => __( 'Permanent (301)', 'wds' ),
357
- 'Temporary (302)' => __( 'Temporary (302)', 'wds' ),
358
- 'Options' => __( 'Options', 'wds' ),
359
- 'Remove' => __( 'Remove', 'wds' ),
360
- 'Cancel' => __( 'Cancel', 'wds' ),
361
- 'Update' => __( 'Update', 'wds' ),
362
- 'Redirect Type' => __( 'Redirect Type', 'wds' ),
363
- 'New URL' => __( 'New URL', 'wds' ),
364
- 'Bulk Update' => __( 'Bulk Update', 'wds' ),
365
- 'Please select some items to edit them.' => __( 'Please select some items to edit them.', 'wds' ),
366
- ),
367
- ) );
368
- }
369
-
370
- if ( class_exists( 'Smartcrawl_Onpage_Settings' ) && ! wp_script_is( 'wds-admin-onpage', 'registered' ) ) {
371
- wp_register_script( 'wds-admin-onpage', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-onpage.js', array(
372
- 'wds-admin-macros',
373
- 'wds-admin-opengraph',
374
- 'wds-qtip2-script',
375
- 'jquery',
376
- ), $version );
377
-
378
- wp_localize_script( 'wds-admin-onpage', '_wds_onpage', array(
379
- 'nonce' => wp_create_nonce( 'wds-onpage-nonce' ),
380
- ) );
381
- }
382
-
383
- if ( class_exists( 'Smartcrawl_Sitemap_Settings' ) && ! wp_script_is( 'wds-admin-sitemaps', 'registered' ) ) {
384
- wp_register_script( 'wds-admin-sitemaps', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-sitemaps.js', array(
385
- 'wds-admin',
386
- 'wds-qtip2-script',
387
- 'jquery',
388
- ), $version );
389
-
390
- wp_localize_script( 'wds-admin-sitemaps', '_wds_sitemaps', array(
391
- 'nonce' => wp_create_nonce( 'wds-nonce' ),
392
- ) );
393
- };
394
-
395
- if ( class_exists( 'Smartcrawl_Settings_Dashboard' ) && ! wp_script_is( 'wds-admin-dashboard', 'registered' ) ) {
396
- wp_register_script( 'wds-admin-dashboard', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-dashboard.js', array(
397
- 'wds-admin',
398
- 'wds-qtip2-script',
399
- 'jquery',
400
- ), $version );
401
-
402
- wp_localize_script( 'wds-admin-dashboard', '_wds_dashboard', array(
403
- 'nonce' => wp_create_nonce( 'wds-nonce' ),
404
- ) );
405
- };
406
-
407
- if ( class_exists( 'Smartcrawl_Checkup_Settings' ) && ! wp_script_is( 'wds-admin-checkup', 'registered' ) ) {
408
- wp_register_script( 'wds-admin-checkup', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-checkup.js', array(
409
- 'wds-admin',
410
- 'wds-qtip2-script',
411
- 'jquery',
412
- ), $version );
413
- };
414
-
415
- if ( class_exists( 'Smartcrawl_Social_Settings' ) && ! wp_script_is( 'wds-admin-social', 'registered' ) ) {
416
- wp_register_script( 'wds-admin-social', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-social.js', array(
417
- 'wds-admin',
418
- 'wds-qtip2-script',
419
- 'jquery',
420
- ), $version );
421
- };
422
-
423
- if ( class_exists( 'Smartcrawl_Settings_Settings' ) && ! wp_script_is( 'wds-admin-settings', 'registered' ) ) {
424
- wp_register_script( 'wds-third-party-import', SMARTCRAWL_PLUGIN_URL . 'js/wds-third-party-import.js', array(
425
- 'wds-admin',
426
- 'underscore',
427
- 'jquery',
428
- ), $version );
429
-
430
- wp_localize_script( 'wds-third-party-import', '_wds_import', array(
431
- 'templates' => array(
432
- 'import-options' => $this->_load( 'settings/underscore-import-options' ),
433
- 'import-error' => $this->_load( 'settings/underscore-import-error' ),
434
- 'import-progress' => $this->_load( 'settings/underscore-import-progress' ),
435
- 'import-progress-reset' => $this->_load( 'settings/underscore-progress-reset' ),
436
- 'import-success' => $this->_load( 'settings/underscore-import-success' ),
437
- ),
438
- 'strings' => array(
439
- 'Yoast' => esc_html__( 'Yoast', 'wds' ),
440
- 'All In One SEO' => esc_html__( 'All In One SEO', 'wds' ),
441
- ),
442
- 'nonce' => wp_create_nonce( 'wds-io-nonce' ),
443
- ) );
444
-
445
- wp_register_script( 'wds-admin-settings', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-settings.js', array(
446
- 'wds-admin',
447
- 'wds-third-party-import',
448
- 'wds-qtip2-script',
449
- 'jquery',
450
- ), $version );
451
- };
452
- }
453
-
454
- /**
455
- * Registers the scripts with global admin functionality
456
- */
457
- public static function register_global_admin_scripts() {
458
- $version = Smartcrawl_Loader::get_version();
459
- if ( ! wp_script_is( 'wds-admin', 'registered' ) ) {
460
- wp_register_script( 'wds-admin', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin.js', array( 'jquery' ), $version );
461
-
462
- wp_localize_script( 'wds-admin', '_wds_admin', array(
463
- 'nonce' => wp_create_nonce( 'wds-admin-nonce' ),
464
- ) );
465
- }
466
-
467
- if ( ! wp_script_is( 'wds-admin-opengraph', 'registered' ) ) {
468
- wp_register_script( 'wds-admin-opengraph', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-opengraph.js', array(
469
- 'underscore',
470
- 'jquery',
471
- 'wds-admin',
472
- ), $version );
473
- }
474
-
475
- if ( ! wp_script_is( 'wds-select2', 'registered' ) ) {
476
- wp_register_script( 'wds-select2', SMARTCRAWL_PLUGIN_URL . 'js/external/select2.min.js', array( 'jquery' ), $version );
477
  }
478
 
479
- if ( ! wp_script_is( 'wds-qtip2-script', 'registered' ) ) {
480
- wp_register_script( 'wds-qtip2-script', SMARTCRAWL_PLUGIN_URL . 'js/external/jquery.qtip.min.js', array( 'jquery' ), $version );
 
481
  }
482
 
483
- wp_register_style( 'wds-admin-opengraph', SMARTCRAWL_PLUGIN_URL . '/css/wds-opengraph.css', null, $version );
484
-
485
- wp_register_style( 'wds-qtip2-style', SMARTCRAWL_PLUGIN_URL . '/css/external/jquery.qtip.min.css', null, $version );
486
-
487
- wp_register_style( 'wds-select2', SMARTCRAWL_PLUGIN_URL . 'css/external/select2.min.css', null, $version );
488
-
489
- wp_register_style( 'wds-app', SMARTCRAWL_PLUGIN_URL . 'css/app.css', array( 'wds-qtip2-style' ), $version );
490
  }
491
 
492
  /**
493
  * Enqueue styles
494
  */
495
  public function admin_styles() {
496
- $version = Smartcrawl_Loader::get_version();
497
-
498
- $this->enqueue_shared_ui();
499
-
500
- wp_enqueue_style( 'wds-qtip2-style' );
501
- wp_enqueue_style( 'wds-select2' );
502
- wp_enqueue_style( 'wds-app' );
503
-
504
- if ( file_exists( SMARTCRAWL_PLUGIN_DIR . 'css/' . $this->name . '.css' ) ) {
505
- wp_enqueue_style( $this->slug, SMARTCRAWL_PLUGIN_URL . 'css/' . $this->name . '.css', array( 'wds' ), $version );
506
- }
507
- }
508
-
509
- /**
510
- * Sets up and enqueues shared UI library
511
- *
512
- * @param bool $add_class Whether to add admin body class to the current page.
513
- */
514
- public static function enqueue_shared_ui( $add_class = true ) {
515
- $version = Smartcrawl_Loader::get_version();
516
- if ( $add_class ) {
517
- add_filter(
518
- 'admin_body_class',
519
- array( 'WDEV_Plugin_Ui', 'admin_body_class' )
520
- );
521
- }
522
-
523
- /**
524
- * Enqueue Dashboard UI Shared Lib.
525
- * We are doing it this way instead of calling WDEV_Plugin_Ui::load because we want to clear out the cache
526
- * by changing the version.
527
- */
528
- $shared_ui_url = SMARTCRAWL_PLUGIN_URL . 'admin/shared-ui';
529
- wp_enqueue_style(
530
- 'wdev-plugin-google_fonts',
531
- 'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Roboto:400,500,300,300italic',
532
- false,
533
- $version
534
- );
535
-
536
- wp_enqueue_style(
537
- 'wdev-plugin-ui',
538
- $shared_ui_url . '/wdev-ui.css',
539
- array( 'wdev-plugin-google_fonts' ),
540
- $version
541
- );
542
-
543
- wp_enqueue_script(
544
- 'wdev-plugin-ui',
545
- $shared_ui_url . '/wdev-ui.js',
546
- array( 'jquery' ),
547
- $version
548
- );
549
- }
550
-
551
- /**
552
- * Enqueue scripts
553
- */
554
- public function admin_scripts() {
555
- $version = Smartcrawl_Loader::get_version();
556
-
557
- wp_enqueue_script( 'wds' );
558
-
559
- wp_enqueue_script( 'wds-select2' );
560
- wp_enqueue_script( 'wds-select2-admin', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-select2.js', array( 'wds-select2' ), $version );
561
-
562
- if ( file_exists( SMARTCRAWL_PLUGIN_DIR . 'js/' . $this->name . '.js' ) ) {
563
- wp_enqueue_script( $this->slug, SMARTCRAWL_PLUGIN_URL . 'js/' . $this->name . '.js', array( 'wds' ), $version );
564
- }
565
-
566
  }
567
 
568
  /**
@@ -621,33 +339,17 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
621
  /**
622
  * Adds body class
623
  *
624
- * @TODO: Apparently a no-op?
625
- *
626
- * @param string $class Class that's being processed.
627
  *
628
  * @return string
629
  */
630
- public function add_body_class( $class ) {
631
- global $current_screen;
632
-
633
- if ( str_replace( '-network', '', $current_screen->id ) === $this->smartcrawl_page_hook ) {
634
- return $class;
635
- } else {
636
- return $class;
637
  }
638
- }
639
-
640
- /**
641
- * On form submission, this method saves the last active tab in a transient so that it can be opened when the page is refreshed.
642
- */
643
- public function save_last_active_tab() {
644
- $data = isset( $_POST['_wpnonce'], $_POST['option_page'] ) && wp_verify_nonce( $_POST['_wpnonce'], $_POST['option_page'] . '-options' )
645
- ? stripslashes_deep( $_POST )
646
- : array();
647
 
648
- if ( isset( $data['wds-admin-active-tab'] ) ) {
649
- set_transient( 'wds-admin-active-tab', sanitize_key( $data['wds-admin-active-tab'] ), 10 );
650
- }
651
  }
652
 
653
  /**
@@ -661,12 +363,17 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
661
  * @return bool
662
  */
663
  protected function _render_page( $view, $args = array() ) {
664
- WDEV_Plugin_Ui::output();
665
  $this->_render( $view, $args );
666
 
667
  return true;
668
  }
669
 
 
 
 
 
 
 
670
  /**
671
  * Populates view defaults with view meta information
672
  *
@@ -675,6 +382,7 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
675
  protected function _get_view_defaults() {
676
  $errors = get_transient( 'wds-settings-save-errors' );
677
  $errors = ! empty( $errors ) ? $errors : array();
 
678
 
679
  return array(
680
  '_view' => array(
@@ -685,6 +393,7 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
685
  'action_url' => $this->action_url,
686
  'msg' => $this->msg,
687
  'errors' => $errors,
 
688
  ),
689
  );
690
  }
@@ -696,10 +405,9 @@ abstract class Smartcrawl_Settings_Admin extends Smartcrawl_Settings {
696
  *
697
  * @return string The last active tab.
698
  */
699
- protected function _get_last_active_tab( $default = '' ) {
700
- $active_tab = get_transient( 'wds-admin-active-tab' );
701
- delete_transient( 'wds-admin-active-tab' );
702
-
703
- return $active_tab ? $active_tab : $default;
704
  }
705
  }
103
 
104
  add_action( 'init', array( $this, 'defaults' ), 999 );
105
  add_action( 'admin_body_class', array( $this, 'add_body_class' ), 20 );
106
+ add_action( 'all_admin_notices', array( $this, 'add_settings_message' ), 10 );
 
107
 
108
  if ( is_multisite() ) {
109
  add_action( 'network_admin_menu', array( $this, 'add_page' ) );
114
 
115
  }
116
 
117
+ private function is_current_screen() {
118
+ $screen = get_current_screen();
119
+ return ! empty( $screen->id )
120
+ && ! empty( $this->smartcrawl_page_hook )
121
+ && strpos( $screen->id, $this->smartcrawl_page_hook ) === 0;
122
+ }
123
+
124
+ public function add_settings_message() {
125
+ $settings_errors = empty( $this->option_name ) ? array() : get_settings_errors( $this->option_name );
126
+ if ( ! $this->is_current_screen() ) {
127
+ return;
128
+ }
129
+ if ( empty( $settings_errors ) && empty( $_GET['settings-updated'] ) ) {
130
+ return;
131
+ }
132
+
133
+ if ( empty( $settings_errors ) ) {
134
+ $class = 'sui-notice-info';
135
+ $message = esc_html__( 'Settings updated', 'wds' );
136
+ } else {
137
+ $settings_error = array_shift( $settings_errors );
138
+ $class = 'sui-notice-error';
139
+ $message = $settings_error['message'];
140
+ }
141
+
142
+ $this->_render( 'floating-message', array(
143
+ 'class' => $class,
144
+ 'message' => $message,
145
+ ) );
146
+ }
147
+
148
  /**
149
  * Unified admin tab URL getter
150
  *
205
  $this->smartcrawl_page_hook = add_submenu_page(
206
  'wds_wizard',
207
  $this->page_title,
208
+ $this->get_title(),
209
  $this->capability,
210
  $this->slug,
211
  array( $this, 'options_page' )
216
  add_action( 'load-' . $this->smartcrawl_page_hook, array( $this, 'process_run_action' ) );
217
  }
218
 
 
 
219
  add_action( "admin_print_styles-{$this->smartcrawl_page_hook}", array( $this, 'admin_styles' ) );
 
 
220
  }
221
 
222
+ abstract public function get_title();
223
+
224
  /**
225
  * Check if the current tab (settings page) is allowed for access
226
  *
263
  return false;
264
  }
265
 
266
+ // SEO checkup not supported on sub-sites
267
+ if ( $tab === self::TAB_CHECKUP && ! is_main_site() ) {
268
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  }
270
 
271
+ // Dashboard shown on all sub-sites
272
+ if ( $tab === self::TAB_DASHBOARD ) {
273
+ return true;
274
  }
275
 
276
+ return in_array( $tab, array_keys( $allowed ), true ) && ! empty( $allowed[ $tab ] );
 
 
 
 
 
 
277
  }
278
 
279
  /**
280
  * Enqueue styles
281
  */
282
  public function admin_styles() {
283
+ wp_enqueue_style( Smartcrawl_Controller_Assets::APP_CSS );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  }
285
 
286
  /**
339
  /**
340
  * Adds body class
341
  *
342
+ * @param string $classes Class that's being processed.
 
 
343
  *
344
  * @return string
345
  */
346
+ public function add_body_class( $classes ) {
347
+ $sui_class = smartcrawl_sui_class();
348
+ if ( $this->is_current_screen() && strpos( $classes, $sui_class ) === false ) {
349
+ $classes .= " {$sui_class} ";
 
 
 
350
  }
 
 
 
 
 
 
 
 
 
351
 
352
+ return $classes;
 
 
353
  }
354
 
355
  /**
363
  * @return bool
364
  */
365
  protected function _render_page( $view, $args = array() ) {
 
366
  $this->_render( $view, $args );
367
 
368
  return true;
369
  }
370
 
371
+ protected function settings_fields( $option_group ) {
372
+ echo "<input type='hidden' name='option_page' value='" . esc_attr( $option_group ) . "' />";
373
+ echo '<input type="hidden" name="action" value="update" />';
374
+ wp_nonce_field( "$option_group-options", "_wpnonce", false );
375
+ }
376
+
377
  /**
378
  * Populates view defaults with view meta information
379
  *
382
  protected function _get_view_defaults() {
383
  $errors = get_transient( 'wds-settings-save-errors' );
384
  $errors = ! empty( $errors ) ? $errors : array();
385
+ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE );
386
 
387
  return array(
388
  '_view' => array(
393
  'action_url' => $this->action_url,
394
  'msg' => $this->msg,
395
  'errors' => $errors,
396
+ 'is_member' => $service->is_member(),
397
  ),
398
  );
399
  }
405
  *
406
  * @return string The last active tab.
407
  */
408
+ protected function _get_active_tab( $default = '' ) {
409
+ return empty( $_GET['tab'] )
410
+ ? $default
411
+ : $_GET['tab'];
 
412
  }
413
  }
includes/admin/settings/autolinks.php CHANGED
@@ -38,11 +38,13 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
38
  * @return array Validated input
39
  */
40
  public function validate( $input ) {
 
 
 
41
  $save_redirects = isset( $input['save_redirects'] ) && $input['save_redirects'];
42
  if ( $save_redirects ) {
43
  $this->save_redirects( $input );
44
 
45
- $result = self::get_specific_options( $this->option_name );
46
  $result['redirect-attachments'] = ! empty( $input['redirect-attachments'] );
47
  $result['redirect-attachments-images_only'] = ! empty( $input['redirect-attachments-images_only'] );
48
 
@@ -55,8 +57,6 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
55
 
56
  $service = $this->get_site_service();
57
 
58
- $result = array();
59
-
60
  if ( ! empty( $input['wds_autolinks-setup'] ) ) {
61
  $result['wds_autolinks-setup'] = true;
62
  }
@@ -76,23 +76,21 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
76
  );
77
 
78
  foreach ( $booleans as $bool ) {
79
- if ( ! empty( $input[ $bool ] ) ) {
80
- $result[ $bool ] = true;
81
- }
82
  }
83
 
84
  // Boolean Arrays.
85
  $post_type_names = array_keys( self::get_post_types() );
86
  foreach ( array_merge( $post_type_names, array( 'comment' ) ) as $post_type ) {
87
- $result[ $post_type ] = in_array( $post_type, $input, true );
88
  }
89
  foreach ( $post_type_names as $post_type ) {
90
- $result["l{$post_type}"] = in_array( "l{$post_type}", $input, true );
91
  }
92
  foreach ( get_taxonomies() as $taxonomy ) {
93
  $tax = get_taxonomy( $taxonomy );
94
  $key = strtolower( $tax->labels->name );
95
- $result["l{$key}"] = in_array( "l{$key}", $input, true );
96
  }
97
 
98
  // Numerics.
@@ -106,7 +104,9 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
106
  if ( isset( $input[ $num ] ) ) {
107
  if ( is_numeric( $input[ $num ] ) ) {
108
  $result[ $num ] = (int) $input[ $num ];
109
- } elseif ( ! empty( $input[ $num ] ) ) {
 
 
110
  add_settings_error( $this->option_name, 'numeric-limits', __( 'Limit values must be numeric' ) );
111
  }
112
  }
@@ -245,7 +245,6 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
245
  $this->name = Smartcrawl_Settings::COMP_AUTOLINKS;
246
  $this->slug = Smartcrawl_Settings::TAB_AUTOLINKS;
247
  $this->action_url = admin_url( 'options.php' );
248
- $this->title = __( 'Advanced Tools', 'wds' );
249
  $this->page_title = __( 'SmartCrawl Wizard: Advanced Tools', 'wds' );
250
 
251
  add_action( 'wp_ajax_wds-load_exclusion-post_data', array( $this, 'json_load_post' ) );
@@ -255,19 +254,26 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
255
  ) );
256
  add_action( 'wp_ajax_wds-load_exclusion_posts-posts_data-paged', array( $this, 'json_load_posts_paged' ) );
257
  add_action( 'admin_init', array( $this, 'reset_moz_api_credentials' ) );
 
258
 
259
  parent::init();
260
  }
261
 
 
 
 
 
262
  /**
263
  * Resets Moz API creds
 
 
264
  */
265
  public function reset_moz_api_credentials() {
266
  $post_data = $this->get_request_data();
267
  if ( isset( $post_data['reset-moz-credentials'] ) ) { // Just a presence flag.
268
  $options = self::get_specific_options( 'wds_settings_options' );
269
- unset( $options['access-id'] );
270
- unset( $options['secret-key'] );
271
  self::update_specific_options( 'wds_settings_options', $options );
272
 
273
  $ref = wp_get_referer();
@@ -279,6 +285,20 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
279
  }
280
  }
281
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  /**
283
  * Loads Individual post data
284
  *
@@ -368,6 +388,7 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
368
  'post_status' => 'publish',
369
  'posts_per_page' => - 1,
370
  'post__in' => $post_ids,
 
371
  'ignore_sticky_posts' => true,
372
  'post_type' => 'any',
373
  );
@@ -409,6 +430,9 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
409
  if ( ! empty( $post_data['type'] ) && in_array( $post_data['type'], array_keys( self::get_post_types() ), true ) ) {
410
  $args['post_type'] = sanitize_key( $post_data['type'] );
411
  }
 
 
 
412
  if ( ! empty( $post_data['page'] ) && is_numeric( $post_data['page'] ) ) {
413
  $args['paged'] = (int) $post_data['page'];
414
  $page = $args['paged'];
@@ -463,10 +487,9 @@ class Smartcrawl_Autolinks_Settings extends Smartcrawl_Settings_Admin {
463
  $arguments['linkto'] = array_merge( $post_types, $taxonomies );
464
  $arguments['insert']['comment'] = __( 'Comments', 'wds' );
465
 
466
- $arguments['active_tab'] = $this->_get_last_active_tab( 'tab_automatic_linking' );
467
 
468
- wp_enqueue_script( 'wds-admin-autolinks' );
469
- wp_enqueue_script( 'wds-admin-redirects' );
470
  $this->_render_page( 'advanced-tools/advanced-tools-settings', $arguments );
471
  }
472
 
38
  * @return array Validated input
39
  */
40
  public function validate( $input ) {
41
+ // Start with old values for all the options
42
+ $result = self::get_specific_options( $this->option_name );
43
+
44
  $save_redirects = isset( $input['save_redirects'] ) && $input['save_redirects'];
45
  if ( $save_redirects ) {
46
  $this->save_redirects( $input );
47
 
 
48
  $result['redirect-attachments'] = ! empty( $input['redirect-attachments'] );
49
  $result['redirect-attachments-images_only'] = ! empty( $input['redirect-attachments-images_only'] );
50
 
57
 
58
  $service = $this->get_site_service();
59
 
 
 
60
  if ( ! empty( $input['wds_autolinks-setup'] ) ) {
61
  $result['wds_autolinks-setup'] = true;
62
  }
76
  );
77
 
78
  foreach ( $booleans as $bool ) {
79
+ $result[ $bool ] = ! empty( $input[ $bool ] );
 
 
80
  }
81
 
82
  // Boolean Arrays.
83
  $post_type_names = array_keys( self::get_post_types() );
84
  foreach ( array_merge( $post_type_names, array( 'comment' ) ) as $post_type ) {
85
+ $result[ $post_type ] = (boolean) smartcrawl_get_array_value( $input, $post_type );
86
  }
87
  foreach ( $post_type_names as $post_type ) {
88
+ $result["l{$post_type}"] = (boolean) smartcrawl_get_array_value( $input, "l{$post_type}" );
89
  }
90
  foreach ( get_taxonomies() as $taxonomy ) {
91
  $tax = get_taxonomy( $taxonomy );
92
  $key = strtolower( $tax->labels->name );
93
+ $result["l{$key}"] = (boolean) smartcrawl_get_array_value( $input, "l{$key}" );
94
  }
95
 
96
  // Numerics.
104
  if ( isset( $input[ $num ] ) ) {
105
  if ( is_numeric( $input[ $num ] ) ) {
106
  $result[ $num ] = (int) $input[ $num ];
107
+ } elseif ( empty( $input[ $num ] ) ) {
108
+ $result[ $num ] = '';
109
+ } else {
110
  add_settings_error( $this->option_name, 'numeric-limits', __( 'Limit values must be numeric' ) );
111
  }
112
  }
245
  $this->name = Smartcrawl_Settings::COMP_AUTOLINKS;
246
  $this->slug = Smartcrawl_Settings::TAB_AUTOLINKS;
247
  $this->action_url = admin_url( 'options.php' );
 
248
  $this->page_title = __( 'SmartCrawl Wizard: Advanced Tools', 'wds' );
249
 
250
  add_action( 'wp_ajax_wds-load_exclusion-post_data', array( $this, 'json_load_post' ) );
254
  ) );
255
  add_action( 'wp_ajax_wds-load_exclusion_posts-posts_data-paged', array( $this, 'json_load_posts_paged' ) );
256
  add_action( 'admin_init', array( $this, 'reset_moz_api_credentials' ) );
257
+ add_action( 'admin_init', array( $this, 'deactivate_autolinks_component' ) );
258
 
259
  parent::init();
260
  }
261
 
262
+ public function get_title() {
263
+ return __( 'Advanced Tools', 'wds' );
264
+ }
265
+
266
  /**
267
  * Resets Moz API creds
268
+ *
269
+ * TODO: probably need to move this to the same location as save_moz_api_credentials
270
  */
271
  public function reset_moz_api_credentials() {
272
  $post_data = $this->get_request_data();
273
  if ( isset( $post_data['reset-moz-credentials'] ) ) { // Just a presence flag.
274
  $options = self::get_specific_options( 'wds_settings_options' );
275
+ $options['access-id'] = '';
276
+ $options['secret-key'] = '';
277
  self::update_specific_options( 'wds_settings_options', $options );
278
 
279
  $ref = wp_get_referer();
285
  }
286
  }
287
 
288
+ public function deactivate_autolinks_component() {
289
+ $data = isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], $this->option_name . '-options' )
290
+ ? stripslashes_deep( $_POST )
291
+ : array();
292
+
293
+ if ( isset( $data['deactivate-autolinks-component'] ) ) {
294
+ Smartcrawl_Settings::deactivate_component( 'autolinks' );
295
+ $autolinks_url = wp_get_referer();
296
+
297
+ wp_redirect( esc_url_raw( add_query_arg( array(), $autolinks_url ) ) );
298
+ die();
299
+ }
300
+ }
301
+
302
  /**
303
  * Loads Individual post data
304
  *
388
  'post_status' => 'publish',
389
  'posts_per_page' => - 1,
390
  'post__in' => $post_ids,
391
+ 'orderby' => 'post__in',
392
  'ignore_sticky_posts' => true,
393
  'post_type' => 'any',
394
  );
430
  if ( ! empty( $post_data['type'] ) && in_array( $post_data['type'], array_keys( self::get_post_types() ), true ) ) {
431
  $args['post_type'] = sanitize_key( $post_data['type'] );
432
  }
433
+ if ( ! empty( $post_data['search'] ) ) {
434
+ $args['s'] = sanitize_text_field( $post_data['search'] );
435
+ }
436
  if ( ! empty( $post_data['page'] ) && is_numeric( $post_data['page'] ) ) {
437
  $args['paged'] = (int) $post_data['page'];
438
  $page = $args['paged'];
487
  $arguments['linkto'] = array_merge( $post_types, $taxonomies );
488
  $arguments['insert']['comment'] = __( 'Comments', 'wds' );
489
 
490
+ $arguments['active_tab'] = $this->_get_active_tab( 'tab_automatic_linking' );
491
 
492
+ wp_enqueue_script( Smartcrawl_Controller_Assets::AUTOLINKS_PAGE_JS );
 
493
  $this->_render_page( 'advanced-tools/advanced-tools-settings', $arguments );
494
  }
495
 
includes/admin/settings/checkup.php CHANGED
@@ -38,35 +38,39 @@ class Smartcrawl_Checkup_Settings extends Smartcrawl_Settings_Admin {
38
  * @return array Validated input
39
  */
40
  public function validate( $input ) {
41
- if ( ! empty( $input['email-recipients'] ) && is_array( $input['email-recipients'] ) ) {
42
- $result['email-recipients'] = array();
43
- foreach ( $input['email-recipients'] as $user ) {
44
- if ( ! is_numeric( $user ) ) {
45
- $user_obj = get_user_by( 'login', $user );
46
- $user = $user_obj->ID;
47
- }
48
-
49
- if ( is_numeric( $user ) ) {
50
- $result['email-recipients'][] = (int) $user;
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
  }
53
- $result['email-recipients'] = array_values( array_filter( array_unique( $result['email-recipients'] ) ) );
54
  }
55
- if ( empty( $result['email-recipients'] ) ) {
56
- $defaults = $this->get_default_options();
57
- $result['email-recipients'] = $defaults['email-recipients'];
58
 
59
- add_settings_error(
60
- $this->option_name,
61
- 'email-recipients-required',
62
- esc_html__( 'There has to be at least one email recipient. The default recipient has been added back.', 'wds' )
63
- );
64
  }
65
 
66
- if ( empty( $input['checkup-cron-enable'] ) ) {
67
  $result['checkup-cron-enable'] = false;
68
-
69
- return $result;
70
  } else {
71
  $result['checkup-cron-enable'] = true;
72
  }
@@ -96,11 +100,11 @@ class Smartcrawl_Checkup_Settings extends Smartcrawl_Settings_Admin {
96
  */
97
  public function get_default_options() {
98
  return array(
99
- 'checkup-cron-enable' => false,
100
- 'checkup-frequency' => 'weekly',
101
- 'checkup-dow' => rand( 0, 6 ),
102
- 'checkup-tod' => rand( 0, 23 ),
103
- 'email-recipients' => array( get_current_user_id() ),
104
  );
105
  }
106
 
@@ -112,23 +116,13 @@ class Smartcrawl_Checkup_Settings extends Smartcrawl_Settings_Admin {
112
  $this->name = Smartcrawl_Settings::COMP_CHECKUP;
113
  $this->slug = Smartcrawl_Settings::TAB_CHECKUP;
114
  $this->action_url = admin_url( 'options.php' );
115
- $this->title = __( 'SEO Checkup', 'wds' );
116
  $this->page_title = __( 'SmartCrawl Wizard: SEO Checkup', 'wds' );
117
 
118
  parent::init();
119
-
120
- add_action( 'wp_ajax_wds-checkup-status', array( $this, 'ajax_checkup_status' ) );
121
  }
122
 
123
- /**
124
- * Checks checkup service status and sends back percentage.
125
- */
126
- public function ajax_checkup_status() {
127
- $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
128
- $percentage = $service->status();
129
- wp_send_json_success( array(
130
- 'percentage' => $percentage,
131
- ) );
132
  }
133
 
134
  /**
@@ -162,12 +156,13 @@ class Smartcrawl_Checkup_Settings extends Smartcrawl_Settings_Admin {
162
  );
163
 
164
  $arguments = array(
165
- 'options' => $options,
166
- 'active_tab' => $this->_get_last_active_tab( 'tab_checkup' ),
 
167
  );
168
 
169
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
170
- wp_enqueue_script( 'wds-admin-checkup' );
171
 
172
  $this->_render_page( 'checkup/checkup-settings', $arguments );
173
  }
@@ -192,5 +187,54 @@ class Smartcrawl_Checkup_Settings extends Smartcrawl_Settings_Admin {
192
  }
193
  }
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  }
196
 
38
  * @return array Validated input
39
  */
40
  public function validate( $input ) {
41
+ $result = array();
42
+ $email_recipients = smartcrawl_get_array_value( $input, 'checkup-email-recipients' );
43
+ if ( ! empty( $email_recipients ) ) {
44
+ $sanitized_recipients = array();
45
+ foreach ( $email_recipients as $recipient ) {
46
+ $recipient_name = smartcrawl_get_array_value( $recipient, 'name' );
47
+ $recipient_email = smartcrawl_get_array_value( $recipient, 'email' );
48
+
49
+ if (
50
+ $recipient_name && $recipient_email
51
+ && sanitize_text_field( $recipient_name ) === $recipient_name
52
+ && sanitize_email( $recipient_email ) === $recipient_email
53
+ && ! self::recipient_exists( $recipient, $sanitized_recipients )
54
+ ) {
55
+ $sanitized_recipients[] = $recipient;
56
+ } else {
57
+ add_settings_error(
58
+ $this->option_name,
59
+ 'email-recipients-invalid',
60
+ esc_html__( 'Some email recipients could not be saved.', 'wds' )
61
+ );
62
  }
63
  }
64
+ $result['checkup-email-recipients'] = $sanitized_recipients;
65
  }
 
 
 
66
 
67
+ if ( empty( $email_recipients ) ) {
68
+ $defaults = $this->get_default_options();
69
+ $result['checkup-email-recipients'] = $defaults['checkup-email-recipients'];
 
 
70
  }
71
 
72
+ if ( empty( $input['checkup-cron-enable'] ) || empty( $email_recipients ) ) {
73
  $result['checkup-cron-enable'] = false;
 
 
74
  } else {
75
  $result['checkup-cron-enable'] = true;
76
  }
100
  */
101
  public function get_default_options() {
102
  return array(
103
+ 'checkup-cron-enable' => false,
104
+ 'checkup-frequency' => 'weekly',
105
+ 'checkup-dow' => rand( 0, 6 ),
106
+ 'checkup-tod' => rand( 0, 23 ),
107
+ 'checkup-email-recipients' => array( self::get_email_recipient( get_current_user_id() ) ),
108
  );
109
  }
110
 
116
  $this->name = Smartcrawl_Settings::COMP_CHECKUP;
117
  $this->slug = Smartcrawl_Settings::TAB_CHECKUP;
118
  $this->action_url = admin_url( 'options.php' );
 
119
  $this->page_title = __( 'SmartCrawl Wizard: SEO Checkup', 'wds' );
120
 
121
  parent::init();
 
 
122
  }
123
 
124
+ public function get_title() {
125
+ return __( 'SEO Checkup', 'wds' );
 
 
 
 
 
 
 
126
  }
127
 
128
  /**
156
  );
157
 
158
  $arguments = array(
159
+ 'options' => $options,
160
+ 'active_tab' => $this->_get_active_tab( 'tab_checkup' ),
161
+ 'email_recipients' => self::get_email_recipients(),
162
  );
163
 
164
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
165
+ wp_enqueue_script( Smartcrawl_Controller_Assets::CHECKUP_PAGE_JS );
166
 
167
  $this->_render_page( 'checkup/checkup-settings', $arguments );
168
  }
187
  }
188
  }
189
 
190
+ /**
191
+ * Since 2.3.0 email recipients are stored as simple Name, Email pairs.
192
+ * Prior to this recipients were stored as an array of user IDs. This method merges the two formats into a single array.
193
+ *
194
+ * @return array
195
+ */
196
+ public static function get_email_recipients() {
197
+ $email_recipients = array();
198
+ $options = Smartcrawl_Settings::get_component_options( self::COMP_CHECKUP );
199
+ $new_recipients = empty( $options['checkup-email-recipients'] )
200
+ ? array()
201
+ : $options['checkup-email-recipients'];
202
+ $old_recipients = empty( $options['email-recipients'] )
203
+ ? array()
204
+ : $options['email-recipients'];
205
+
206
+ foreach ( $old_recipients as $user_id ) {
207
+ if ( ! is_numeric( $user_id ) ) {
208
+ continue;
209
+ }
210
+ $old_recipient = self::get_email_recipient( $user_id );
211
+ if ( self::recipient_exists( $old_recipient, $new_recipients ) ) {
212
+ continue;
213
+ }
214
+
215
+ $email_recipients[] = $old_recipient;
216
+ }
217
+
218
+ return array_merge(
219
+ $email_recipients,
220
+ $new_recipients
221
+ );
222
+ }
223
+
224
+ private static function recipient_exists( $recipient, $recipient_array ) {
225
+ $emails = array_column( $recipient_array, 'email' );
226
+ $needle = (string) smartcrawl_get_array_value( $recipient, 'email' );
227
+
228
+ return in_array( $needle, $emails, true );
229
+ }
230
+
231
+ private static function get_email_recipient( $user_id ) {
232
+ $user = Smartcrawl_Model_User::get( $user_id );
233
+ $email_details = array(
234
+ 'name' => $user->get_display_name(),
235
+ 'email' => $user->get_email(),
236
+ );
237
+ return $email_details;
238
+ }
239
  }
240
 
includes/admin/settings/dashboard.php CHANGED
@@ -28,14 +28,13 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
28
 
29
  public function init() {
30
  $this->slug = Smartcrawl_Settings::TAB_DASHBOARD;
31
- $this->title = __( 'SmartCrawl', 'wds' );
32
- $this->sub_title = __( 'Dashboard', 'wds' );
33
  $this->page_title = __( 'SmartCrawl Wizard: Dashboard', 'wds' );
34
 
35
  add_action( 'wp_ajax_wds-service-redirect', array( $this, 'json_service_redirect' ) );
36
  add_action( 'wp_ajax_wds-service-ignore', array( $this, 'json_service_ignore' ) );
37
  add_action( 'wp_ajax_wds-service-unignore', array( $this, 'json_service_unignore' ) );
38
  add_action( 'wp_ajax_wds-service-ignores-purge', array( $this, 'json_service_ignores_purge' ) );
 
39
 
40
  add_action( 'wp_ajax_wds-service-update_sitemap', array( $this, 'json_service_update_sitemap' ) );
41
  add_action( 'wp_ajax_wds-activate-component', array( $this, 'json_activate_component' ) );
@@ -44,6 +43,33 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
44
  parent::init();
45
  }
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  /**
48
  * Handles service ignores addition
49
  */
@@ -157,7 +183,7 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
157
  : 0;
158
 
159
  // Update sitemap
160
- $controller->update_sitemap();
161
 
162
  // Get fresh count
163
  $data = $controller->get_sitemap_stats();
@@ -237,8 +263,22 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
237
  wp_send_json_error( $result );
238
  }
239
 
240
- $source = esc_url( $data['source'] );
241
- $redirect = esc_url( $data['redirect'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  $rmodel = new Smartcrawl_Model_Redirection();
243
 
244
  $status_code = $rmodel->get_default_redirection_status_type();
@@ -346,7 +386,7 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
346
  * Add admin settings page
347
  */
348
  public function options_page() {
349
- wp_enqueue_script( 'wds-admin-dashboard' );
350
 
351
  $uptime = $this->_get_uptime_service();
352
 
@@ -376,7 +416,7 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
376
 
377
  $this->smartcrawl_page_hook = add_menu_page(
378
  $this->page_title,
379
- $this->title,
380
  $this->capability,
381
  $this->slug,
382
  array( &$this, 'options_page' ),
@@ -386,7 +426,7 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
386
  $this->smartcrawl_page_hook = add_submenu_page(
387
  $this->slug,
388
  $this->page_title,
389
- $this->sub_title,
390
  $this->capability,
391
  $this->slug,
392
  array( &$this, 'options_page' )
@@ -399,7 +439,14 @@ class Smartcrawl_Settings_Dashboard extends Smartcrawl_Settings_Admin {
399
  }
400
 
401
  add_action( "admin_print_styles-{$this->smartcrawl_page_hook}", array( &$this, 'admin_styles' ) );
402
- add_action( "admin_print_scripts-{$this->smartcrawl_page_hook}", array( &$this, 'admin_scripts' ) );
 
 
 
 
 
 
 
403
  }
404
 
405
  /**
28
 
29
  public function init() {
30
  $this->slug = Smartcrawl_Settings::TAB_DASHBOARD;
 
 
31
  $this->page_title = __( 'SmartCrawl Wizard: Dashboard', 'wds' );
32
 
33
  add_action( 'wp_ajax_wds-service-redirect', array( $this, 'json_service_redirect' ) );
34
  add_action( 'wp_ajax_wds-service-ignore', array( $this, 'json_service_ignore' ) );
35
  add_action( 'wp_ajax_wds-service-unignore', array( $this, 'json_service_unignore' ) );
36
  add_action( 'wp_ajax_wds-service-ignores-purge', array( $this, 'json_service_ignores_purge' ) );
37
+ add_action( 'wp_ajax_wds-load-issue-occurrences', array( $this, 'json_load_issue_occurrences' ) );
38
 
39
  add_action( 'wp_ajax_wds-service-update_sitemap', array( $this, 'json_service_update_sitemap' ) );
40
  add_action( 'wp_ajax_wds-activate-component', array( $this, 'json_activate_component' ) );
43
  parent::init();
44
  }
45
 
46
+ public function json_load_issue_occurrences() {
47
+ $seo_service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
48
+ $report = $seo_service->get_report();
49
+ $data = $this->get_request_data();
50
+ if ( empty( $data ) || empty( $data['issue_id'] ) ) {
51
+ Smartcrawl_Logger::error( 'Issue occurrences could not be loaded. Request data invalid.' );
52
+ wp_send_json_error();
53
+ }
54
+
55
+ $issue_id = smartcrawl_get_array_value( $data, 'issue_id' );
56
+ $issue = $report->get_issue( $issue_id );
57
+ if ( empty( $issue ) ) {
58
+ Smartcrawl_Logger::error( 'Issue occurrences could not be loaded. Issue not found.' );
59
+ wp_send_json_error();
60
+ }
61
+
62
+ $occurrences = array();
63
+ foreach ( $issue['origin'] as $origin ) {
64
+ $issue_origin = is_array( $origin ) && ! empty( $origin[0] ) ? $origin[0] : $origin;
65
+ $occurrences[] = $issue_origin;
66
+ }
67
+
68
+ wp_send_json_success( array(
69
+ 'occurrences' => $occurrences,
70
+ ) );
71
+ }
72
+
73
  /**
74
  * Handles service ignores addition
75
  */
183
  : 0;
184
 
185
  // Update sitemap
186
+ Smartcrawl_Xml_Sitemap::get()->set_sitemap_pristine( false );
187
 
188
  // Get fresh count
189
  $data = $controller->get_sitemap_stats();
263
  wp_send_json_error( $result );
264
  }
265
 
266
+ $source = (string) smartcrawl_get_array_value( $data, 'source' );
267
+ $source = trim( esc_url( $source ) );
268
+
269
+ $redirect = (string) smartcrawl_get_array_value( $data, 'redirect' );
270
+ $redirect = trim( esc_url( $redirect ) );
271
+
272
+ if ( ! $source || ! $redirect ) {
273
+ wp_send_json_error( $result );
274
+ }
275
+ if ( ! preg_match( '/^https?:\/\//', $source ) ) {
276
+ $source = home_url( $source );
277
+ }
278
+ if ( ! preg_match( '/^https?:\/\//', $redirect ) ) {
279
+ $redirect = home_url( $redirect );
280
+ }
281
+
282
  $rmodel = new Smartcrawl_Model_Redirection();
283
 
284
  $status_code = $rmodel->get_default_redirection_status_type();
386
  * Add admin settings page
387
  */
388
  public function options_page() {
389
+ wp_enqueue_script( Smartcrawl_Controller_Assets::DASHBOARD_PAGE_JS );
390
 
391
  $uptime = $this->_get_uptime_service();
392
 
416
 
417
  $this->smartcrawl_page_hook = add_menu_page(
418
  $this->page_title,
419
+ $this->get_title(),
420
  $this->capability,
421
  $this->slug,
422
  array( &$this, 'options_page' ),
426
  $this->smartcrawl_page_hook = add_submenu_page(
427
  $this->slug,
428
  $this->page_title,
429
+ $this->get_sub_title(),
430
  $this->capability,
431
  $this->slug,
432
  array( &$this, 'options_page' )
439
  }
440
 
441
  add_action( "admin_print_styles-{$this->smartcrawl_page_hook}", array( &$this, 'admin_styles' ) );
442
+ }
443
+
444
+ public function get_title() {
445
+ return __( 'SmartCrawl', 'wds' );
446
+ }
447
+
448
+ public function get_sub_title() {
449
+ return __( 'Dashboard', 'wds' );
450
  }
451
 
452
  /**
includes/admin/settings/onpage.php CHANGED
@@ -28,22 +28,17 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
28
  $result['wds_onpage-setup'] = true;
29
  }
30
 
31
- // Meta robots
32
- if ( ! empty( $input['meta_robots-noindex-main_blog_archive'] ) ) {
33
- $result['meta_robots-noindex-main_blog_archive'] = true;
34
- }
35
- if ( ! empty( $input['meta_robots-nofollow-main_blog_archive'] ) ) {
36
- $result['meta_robots-nofollow-main_blog_archive'] = true;
37
- }
38
- if ( ! empty( $input['meta_robots-main_blog_archive-subsequent_pages'] ) ) {
39
- $result['meta_robots-main_blog_archive-subsequent_pages'] = true;
40
- }
41
-
42
- if ( ! empty( $input['meta_robots-noindex-search'] ) ) {
43
- $result['meta_robots-noindex-search'] = true;
44
- }
45
- if ( ! empty( $input['meta_robots-nofollow-search'] ) ) {
46
- $result['meta_robots-nofollow-search'] = true;
47
  }
48
 
49
  $tax_options = $this->_get_tax_options( '' );
@@ -104,13 +99,13 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
104
 
105
  foreach ( $strings as $str ) {
106
  if ( isset( $input["title-{$str}"] ) ) {
107
- $result["title-{$str}"] = $this->_sanitize_preserve_macros( $input["title-{$str}"] );
108
  }
109
  if ( isset( $input["metadesc-{$str}"] ) ) {
110
- $result["metadesc-{$str}"] = $this->_sanitize_preserve_macros( $input["metadesc-{$str}"] );
111
  }
112
  if ( isset( $input["metakeywords-{$str}"] ) ) {
113
- $result["metakeywords-{$str}"] = $this->_sanitize_preserve_macros( $input["metakeywords-{$str}"] );
114
  }
115
 
116
  // OpenGraph
@@ -118,10 +113,10 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
118
  $result["og-active-{$str}"] = (boolean) $input["og-active-{$str}"];
119
  }
120
  if ( isset( $input["og-title-{$str}"] ) ) {
121
- $result["og-title-{$str}"] = $this->_sanitize_preserve_macros( $input["og-title-{$str}"] );
122
  }
123
  if ( isset( $input["og-description-{$str}"] ) ) {
124
- $result["og-description-{$str}"] = $this->_sanitize_preserve_macros( $input["og-description-{$str}"] );
125
  }
126
 
127
  $result["og-images-{$str}"] = array();
@@ -137,10 +132,10 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
137
  $result["twitter-active-{$str}"] = (boolean) $input["twitter-active-{$str}"];
138
  }
139
  if ( isset( $input["twitter-title-{$str}"] ) ) {
140
- $result["twitter-title-{$str}"] = $this->_sanitize_preserve_macros( $input["twitter-title-{$str}"] );
141
  }
142
  if ( isset( $input["twitter-description-{$str}"] ) ) {
143
- $result["twitter-description-{$str}"] = $this->_sanitize_preserve_macros( $input["twitter-description-{$str}"] );
144
  }
145
 
146
  $result["twitter-images-{$str}"] = array();
@@ -155,7 +150,7 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
155
  // Special case handling for home page keywords
156
  // because the legacy one doesn't follow the naming convention
157
  if ( isset( $input['keywords-home'] ) ) {
158
- $result['keywords-home'] = $this->_sanitize_preserve_macros( $input['keywords-home'] );
159
  }
160
 
161
  $result['enable-author-archive'] = isset( $input['enable-author-archive'] )
@@ -202,22 +197,24 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
202
  *
203
  * @return array Generated meta robots option array
204
  */
205
- public static function get_robots_options_for( $type, $include_subsequent_pages_option = true ) {
206
  $options = array(
207
  "meta_robots-noindex-{$type}" => array(
208
- 'label' => __( 'Noindex', 'wds' ),
209
- 'description' => __( 'Disabling indexing means that this content will not be indexed and searchable in search engines.', 'wds' ),
 
210
  ),
211
  "meta_robots-nofollow-{$type}" => array(
212
- 'label' => __( 'Nofollow', 'wds' ),
213
- 'description' => __( 'Disabling following means search engines will not follow and crawl links it finds in this content.', 'wds' ),
 
214
  ),
215
  );
216
 
217
  if ( $include_subsequent_pages_option ) {
218
  $options["meta_robots-{$type}-subsequent_pages"] = array(
219
- 'label' => __( 'Apply to all pages except the first', 'wds' ),
220
- 'description' => __( 'If you select this option, the first page will be left alone, but the indexing settings will be applied to subsequent pages.', 'wds' ),
221
  );
222
  }
223
 
@@ -248,26 +245,24 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
248
  return $opts;
249
  }
250
 
251
- /**
252
- * Preserve macros in sanitization
253
- *
254
- * @param string $str String to sanitize
255
- *
256
- * @return string Sanitized string
257
- */
258
- private function _sanitize_preserve_macros( $str ) {
259
- if ( empty( $str ) ) {
260
- return $str;
261
- }
262
-
263
- $rpl = '__SMARTCRAWL_MACRO_QUOTES_REPLACEMENT__';
264
- $str = preg_replace( '/%%/', $rpl, $str );
265
 
266
- $str = sanitize_text_field( $str );
 
 
 
 
 
 
 
267
 
268
- $str = preg_replace( '/' . preg_quote( $rpl, '/' ) . '/', '%%', $str );
 
269
 
270
- return $str;
271
  }
272
 
273
  public function init() {
@@ -275,7 +270,6 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
275
  $this->name = Smartcrawl_Settings::COMP_ONPAGE;
276
  $this->slug = Smartcrawl_Settings::TAB_ONPAGE;
277
  $this->action_url = admin_url( 'options.php' );
278
- $this->title = __( 'Title & Meta', 'wds' );
279
  $this->page_title = __( 'SmartCrawl Wizard: Title & Meta', 'wds' );
280
 
281
  add_action( 'wp_ajax_wds-onpage-preview', array( $this, 'json_create_preview' ) );
@@ -284,6 +278,10 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
284
 
285
  }
286
 
 
 
 
 
287
  /**
288
  * Preview building handler
289
  */
@@ -291,8 +289,8 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
291
  $data = $this->get_request_data();
292
 
293
  $src_type = ! empty( $data['type'] ) ? sanitize_text_field( $data['type'] ) : false;
294
- $src_title = ! empty( $data['title'] ) ? $this->_sanitize_preserve_macros( $data['title'] ) : false;
295
- $src_meta = ! empty( $data['description'] ) ? $this->_sanitize_preserve_macros( $data['description'] ) : false;
296
 
297
  $updated = false;
298
 
@@ -301,40 +299,39 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
301
  $description = get_bloginfo( 'description' );
302
 
303
  $warnings = array();
 
304
 
305
  switch ( $src_type ) {
306
  case 'search-page':
307
  set_query_var( 's', 'Example search phrase' );
308
- // Handled the same way as homepage so fall-through intentional
 
 
309
  case 'author-archive':
310
  set_query_var( 'author', get_current_user_id() );
311
- // Handled the same way as homepage so fall-through intentional
 
 
312
  case 'date-archive':
313
  set_query_var( 'monthnum', 3 );
314
  set_query_var( 'year', 2018 );
315
- // Handled the same way as homepage so fall-through intentional
 
316
 
317
  case 'homepage':
318
- case '404-page':
319
- $title = smartcrawl_replace_vars( $src_title );
320
- $description = smartcrawl_replace_vars( $src_meta );
321
- $updated = true;
322
 
323
- if ( strlen( $title ) > SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT ) {
324
- $warnings['title'] = __( 'Your title seems to be a bit on the long side, consider trimming it', 'wds' );
325
- }
326
- if ( strlen( $description ) > SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT ) {
327
- $warnings['description'] = __( 'Your description seems to be a bit on the long side, consider trimming it', 'wds' );
328
- }
329
  break;
330
 
331
  case 'static-homepage':
332
- $resolver = Smartcrawl_Endpoint_Resolver::resolve();
333
  $front_page = get_post( (int) get_option( 'page_on_front' ) );
334
  $resolver->simulate( Smartcrawl_Endpoint_Resolver::L_SINGULAR, is_a( $front_page, 'WP_Post' ) ? $front_page : null );
335
 
336
- $title = Smartcrawl_OnPage::get()->get_title();
337
- $description = Smartcrawl_OnPage::get()->get_description();
338
  $link = get_home_url();
339
  $updated = true;
340
 
@@ -344,8 +341,8 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
344
  case 'bp-group':
345
  $group = $this->_get_random_bp_group();
346
  if ( ! empty( $group ) ) {
347
- $title = smartcrawl_replace_vars( $src_title, (array) $group );
348
- $description = smartcrawl_replace_vars( $src_meta, (array) $group );
349
  $link = bp_get_group_permalink( $group );
350
  }
351
  $updated = true;
@@ -353,15 +350,18 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
353
 
354
  case 'bp-profile':
355
  $bp_profile_args = array(
356
- 'full_name' => bp_get_loggedin_user_fullname(),
357
- 'username' => bp_get_loggedin_user_username(),
358
  );
359
 
360
- $title = smartcrawl_replace_vars( $src_title, $bp_profile_args );
361
- $description = smartcrawl_replace_vars( $src_meta, $bp_profile_args );
362
  $link = bp_loggedin_user_domain();
363
  $updated = true;
364
  break;
 
 
 
365
  }
366
 
367
  // Custom post type?
@@ -374,9 +374,9 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
374
  $updated = true;
375
  $post = $this->_get_random_post( $type );
376
  if ( ! empty( $post ) ) {
377
- $title = smartcrawl_replace_vars( $src_title, $post );
378
- $description = smartcrawl_replace_vars( $src_meta, $post );
379
- $link = get_permalink( $post['ID'] );
380
  }
381
  }
382
  }
@@ -391,8 +391,8 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
391
  $updated = true;
392
  $archive_pt = str_replace( $archive_post_type_prefix, '', $archive_post_type );
393
 
394
- $title = smartcrawl_replace_vars( $src_title, get_post_type_object( $archive_pt ) );
395
- $description = smartcrawl_replace_vars( $src_meta, get_post_type_object( $archive_pt ) );
396
  $link = get_post_type_archive_link( $archive_pt );
397
  }
398
  }
@@ -407,13 +407,27 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
407
  $updated = true;
408
  $term = $this->_get_random_term( $tax );
409
  if ( ! empty( $term ) ) {
410
- $title = smartcrawl_replace_vars( $src_title, $term );
411
- $description = smartcrawl_replace_vars( $src_meta, $term );
412
- $link = get_term_link( $term['term_id'], $tax );
413
  }
414
  }
415
  }
416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  wp_send_json( array(
418
  'status' => $updated,
419
  'markup' => $this->_load( 'onpage/onpage-preview', array(
@@ -442,7 +456,7 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
442
  *
443
  * @param string $type Post type
444
  *
445
- * @return array
446
  */
447
  private function _get_random_post( $type = 'post' ) {
448
  $args = array(
@@ -456,8 +470,8 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
456
  $q = new WP_Query( $args );
457
 
458
  return ! empty( $q->post )
459
- ? (array) $q->post
460
- : array();
461
  }
462
 
463
  /**
@@ -465,7 +479,7 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
465
  *
466
  * @param string $type Taxonomy type
467
  *
468
- * @return array
469
  */
470
  private function _get_random_term( $type = 'category' ) {
471
  $terms = get_terms(
@@ -475,12 +489,12 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
475
  )
476
  );
477
  if ( empty( $terms ) ) {
478
- return array();
479
  }
480
 
481
  shuffle( $terms );
482
 
483
- return (array) $terms[0];
484
  }
485
 
486
  /**
@@ -493,33 +507,44 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
493
 
494
  $arguments = array(
495
  'macros' => self::get_macros(),
496
- 'meta_robots_main_blog_archive' => self::get_robots_options_for( 'main_blog_archive' ),
497
  );
498
 
499
  foreach ( $this->_get_tax_options( 'meta_robots_' ) as $option => $tax ) {
500
  $tax = str_replace( '-', '_', $tax );
 
501
  if ( empty( $arguments[ $option ] ) ) {
502
- $arguments[ $option ] = self::get_robots_options_for( $tax );
 
503
  }
504
  }
505
 
506
  foreach ( $this->_get_other_types_options( 'meta_robots_' ) as $option => $value ) {
 
507
  if ( empty( $arguments[ $option ] ) ) {
508
- $arguments[ $option ] = self::get_robots_options_for( $value );
509
  }
510
  }
511
 
512
  $archive_post_types = smartcrawl_get_archive_post_type_labels();
513
  foreach ( $archive_post_types as $archive_post_type => $archive_post_type_label ) {
514
- $arguments['archive_post_type_robots'][ $archive_post_type ] = self::get_robots_options_for( $archive_post_type );
 
515
  }
516
  $arguments['archive_post_types'] = $archive_post_types;
517
 
518
- $arguments['meta_robots_search'] = self::get_robots_options_for( 'search', false );
 
 
 
 
519
 
520
  // Allow for post type options
521
- foreach ( get_post_types( array( 'public' => true ) ) as $post_type ) {
522
- $arguments['post_robots'][ $post_type ] = self::get_robots_options_for( $post_type, false );
 
 
 
523
  }
524
 
525
  $arguments['radio_options'] = array(
@@ -536,9 +561,21 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
536
 
537
  $arguments['show_homepage_options'] = $this->_show_homepage_options();
538
 
539
- $arguments['active_tab'] = $this->_get_last_active_tab( 'tab_homepage' );
 
 
 
 
 
 
 
 
 
 
 
 
540
 
541
- wp_enqueue_script( 'wds-admin-onpage' );
542
  $this->_render_page( 'onpage/onpage-settings', $arguments );
543
  }
544
 
@@ -593,13 +630,11 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
593
  }
594
 
595
  private function _show_homepage_options() {
596
- if ( is_multisite() ) {
597
- $show_homepage_options = SMARTCRAWL_SITEWIDE || 'posts' === get_site_option( 'show_on_front' );
598
- } else {
599
- $show_homepage_options = 'posts' === get_option( 'show_on_front' );
600
  }
601
 
602
- return $show_homepage_options;
603
  }
604
 
605
  /**
@@ -744,28 +779,6 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
744
 
745
  }
746
 
747
- /**
748
- * @return array
749
- */
750
- private function get_archive_post_types( $prefix = '' ) {
751
- $archive_post_types = array();
752
- $post_type_args = array(
753
- 'public' => true,
754
- 'has_archive' => true,
755
- );
756
-
757
- foreach ( get_post_types( $post_type_args ) as $post_type ) {
758
- if ( in_array( $post_type, array( 'revision', 'nav_menu_item' ), true ) ) {
759
- continue;
760
- }
761
-
762
- $post_type_object = get_post_type_object( $post_type );
763
- $archive_post_types[ $prefix . $post_type ] = $post_type_object->labels->name;
764
- }
765
-
766
- return $archive_post_types;
767
- }
768
-
769
  /**
770
  * @return array
771
  */
@@ -773,4 +786,3 @@ class Smartcrawl_Onpage_Settings extends Smartcrawl_Settings_Admin {
773
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-onpage-nonce' ) ? $_POST : array();
774
  }
775
  }
776
-
28
  $result['wds_onpage-setup'] = true;
29
  }
30
 
31
+ foreach ( array( 'main_blog_archive', 'search', 'bp_groups', 'bp_profile' ) as $type ) {
32
+ // Meta robots
33
+ if ( ! empty( $input["meta_robots-noindex-$type"] ) ) {
34
+ $result["meta_robots-noindex-$type"] = true;
35
+ }
36
+ if ( ! empty( $input["meta_robots-nofollow-$type"] ) ) {
37
+ $result["meta_robots-nofollow-$type"] = true;
38
+ }
39
+ if ( ! empty( $input["meta_robots-$type-subsequent_pages"] ) ) {
40
+ $result["meta_robots-$type-subsequent_pages"] = true;
41
+ }
 
 
 
 
 
42
  }
43
 
44
  $tax_options = $this->_get_tax_options( '' );
99
 
100
  foreach ( $strings as $str ) {
101
  if ( isset( $input["title-{$str}"] ) ) {
102
+ $result["title-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["title-{$str}"] );
103
  }
104
  if ( isset( $input["metadesc-{$str}"] ) ) {
105
+ $result["metadesc-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["metadesc-{$str}"] );
106
  }
107
  if ( isset( $input["metakeywords-{$str}"] ) ) {
108
+ $result["metakeywords-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["metakeywords-{$str}"] );
109
  }
110
 
111
  // OpenGraph
113
  $result["og-active-{$str}"] = (boolean) $input["og-active-{$str}"];
114
  }
115
  if ( isset( $input["og-title-{$str}"] ) ) {
116
+ $result["og-title-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["og-title-{$str}"] );
117
  }
118
  if ( isset( $input["og-description-{$str}"] ) ) {
119
+ $result["og-description-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["og-description-{$str}"] );
120
  }
121
 
122
  $result["og-images-{$str}"] = array();
132
  $result["twitter-active-{$str}"] = (boolean) $input["twitter-active-{$str}"];
133
  }
134
  if ( isset( $input["twitter-title-{$str}"] ) ) {
135
+ $result["twitter-title-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["twitter-title-{$str}"] );
136
  }
137
  if ( isset( $input["twitter-description-{$str}"] ) ) {
138
+ $result["twitter-description-{$str}"] = smartcrawl_sanitize_preserve_macros( $input["twitter-description-{$str}"] );
139
  }
140
 
141
  $result["twitter-images-{$str}"] = array();
150
  // Special case handling for home page keywords
151
  // because the legacy one doesn't follow the naming convention
152
  if ( isset( $input['keywords-home'] ) ) {
153
+ $result['keywords-home'] = smartcrawl_sanitize_preserve_macros( $input['keywords-home'] );
154
  }
155
 
156
  $result['enable-author-archive'] = isset( $input['enable-author-archive'] )
197
  *
198
  * @return array Generated meta robots option array
199
  */
200
+ public static function get_robots_options_for( $type, $include_subsequent_pages_option = true, $context = '' ) {
201
  $options = array(
202
  "meta_robots-noindex-{$type}" => array(
203
+ 'label' => sprintf( '%s %s', esc_html__( 'Index', 'wds' ), $context ),
204
+ 'description' => esc_html__( 'Disabling indexing means that this content will not be indexed and searchable in search engines.', 'wds' ),
205
+ 'inverted' => true,
206
  ),
207
  "meta_robots-nofollow-{$type}" => array(
208
+ 'label' => sprintf( '%s %s', esc_html__( 'Follow', 'wds' ), $context ),
209
+ 'description' => esc_html__( 'Disabling following means search engines will not follow and crawl links it finds in this content.', 'wds' ),
210
+ 'inverted' => true,
211
  ),
212
  );
213
 
214
  if ( $include_subsequent_pages_option ) {
215
  $options["meta_robots-{$type}-subsequent_pages"] = array(
216
+ 'label' => esc_html__( 'Apply to all pages except the first', 'wds' ),
217
+ 'description' => esc_html__( 'If you select this option, the first page will be left alone, but the indexing settings will be applied to subsequent pages.', 'wds' ),
218
  );
219
  }
220
 
245
  return $opts;
246
  }
247
 
248
+ protected function _get_other_types_options_context( $pfx = '' ) {
249
+ $context_strings = array();
250
+ foreach ( $this->_get_other_types_options( '' ) as $option ) {
251
+ $context = '';
 
 
 
 
 
 
 
 
 
 
252
 
253
+ if ( in_array( $option, array( 'category', 'post_tag' ), true ) ) {
254
+ $tax_object = get_taxonomy( $option );
255
+ $context = strtolower( $tax_object->label );
256
+ } elseif ( 'author' === $option ) {
257
+ $context = esc_html__( 'author archives' );
258
+ } elseif ( 'date' === $option ) {
259
+ $context = esc_html__( 'date archives' );
260
+ }
261
 
262
+ $context_strings[ $pfx . $option ] = $context;
263
+ }
264
 
265
+ return $context_strings;
266
  }
267
 
268
  public function init() {
270
  $this->name = Smartcrawl_Settings::COMP_ONPAGE;
271
  $this->slug = Smartcrawl_Settings::TAB_ONPAGE;
272
  $this->action_url = admin_url( 'options.php' );
 
273
  $this->page_title = __( 'SmartCrawl Wizard: Title & Meta', 'wds' );
274
 
275
  add_action( 'wp_ajax_wds-onpage-preview', array( $this, 'json_create_preview' ) );
278
 
279
  }
280
 
281
+ public function get_title() {
282
+ return __( 'Title & Meta', 'wds' );
283
+ }
284
+
285
  /**
286
  * Preview building handler
287
  */
289
  $data = $this->get_request_data();
290
 
291
  $src_type = ! empty( $data['type'] ) ? sanitize_text_field( $data['type'] ) : false;
292
+ $src_title = ! empty( $data['title'] ) ? smartcrawl_sanitize_preserve_macros( $data['title'] ) : false;
293
+ $src_meta = ! empty( $data['description'] ) ? smartcrawl_sanitize_preserve_macros( $data['description'] ) : false;
294
 
295
  $updated = false;
296
 
299
  $description = get_bloginfo( 'description' );
300
 
301
  $warnings = array();
302
+ $resolver = Smartcrawl_Endpoint_Resolver::resolve();
303
 
304
  switch ( $src_type ) {
305
  case 'search-page':
306
  set_query_var( 's', 'Example search phrase' );
307
+ $resolver->set_location( Smartcrawl_Endpoint_Resolver::L_SEARCH );
308
+ break;
309
+
310
  case 'author-archive':
311
  set_query_var( 'author', get_current_user_id() );
312
+ $resolver->set_location( Smartcrawl_Endpoint_Resolver::L_AUTHOR_ARCHIVE );
313
+ break;
314
+
315
  case 'date-archive':
316
  set_query_var( 'monthnum', 3 );
317
  set_query_var( 'year', 2018 );
318
+ $resolver->set_location( Smartcrawl_Endpoint_Resolver::L_DATE_ARCHIVE );
319
+ break;
320
 
321
  case 'homepage':
322
+ $resolver->set_location( Smartcrawl_Endpoint_Resolver::L_BLOG_HOME );
323
+ break;
 
 
324
 
325
+ case '404-page':
326
+ $resolver->set_location( Smartcrawl_Endpoint_Resolver::L_404 );
 
 
 
 
327
  break;
328
 
329
  case 'static-homepage':
 
330
  $front_page = get_post( (int) get_option( 'page_on_front' ) );
331
  $resolver->simulate( Smartcrawl_Endpoint_Resolver::L_SINGULAR, is_a( $front_page, 'WP_Post' ) ? $front_page : null );
332
 
333
+ $title = Smartcrawl_Meta_Value_Helper::get()->get_title();
334
+ $description = Smartcrawl_Meta_Value_Helper::get()->get_description();
335
  $link = get_home_url();
336
  $updated = true;
337
 
341
  case 'bp-group':
342
  $group = $this->_get_random_bp_group();
343
  if ( ! empty( $group ) ) {
344
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title, $group );
345
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta, $group );
346
  $link = bp_get_group_permalink( $group );
347
  }
348
  $updated = true;
350
 
351
  case 'bp-profile':
352
  $bp_profile_args = array(
353
+ 'bp_user_full_name' => bp_get_loggedin_user_fullname(),
354
+ 'bp_user_username' => bp_get_loggedin_user_username(),
355
  );
356
 
357
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title, $bp_profile_args );
358
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta, $bp_profile_args );
359
  $link = bp_loggedin_user_domain();
360
  $updated = true;
361
  break;
362
+
363
+ default:
364
+ break;
365
  }
366
 
367
  // Custom post type?
374
  $updated = true;
375
  $post = $this->_get_random_post( $type );
376
  if ( ! empty( $post ) ) {
377
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title, $post );
378
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta, $post );
379
+ $link = get_permalink( $post->ID );
380
  }
381
  }
382
  }
391
  $updated = true;
392
  $archive_pt = str_replace( $archive_post_type_prefix, '', $archive_post_type );
393
 
394
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title, get_post_type_object( $archive_pt ) );
395
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta, get_post_type_object( $archive_pt ) );
396
  $link = get_post_type_archive_link( $archive_pt );
397
  }
398
  }
407
  $updated = true;
408
  $term = $this->_get_random_term( $tax );
409
  if ( ! empty( $term ) ) {
410
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title, $term );
411
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta, $term );
412
+ $link = get_term_link( $term->term_id, $tax );
413
  }
414
  }
415
  }
416
 
417
+ if ( ! $updated ) {
418
+ $title = Smartcrawl_Replacement_Helper::replace( $src_title );
419
+ $description = Smartcrawl_Replacement_Helper::replace( $src_meta );
420
+ $updated = true;
421
+
422
+ // TODO: use mb functions for length?
423
+ if ( strlen( $title ) > SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT ) {
424
+ $warnings['title'] = __( 'Your title seems to be a bit on the long side, consider trimming it', 'wds' );
425
+ }
426
+ if ( strlen( $description ) > SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT ) {
427
+ $warnings['description'] = __( 'Your description seems to be a bit on the long side, consider trimming it', 'wds' );
428
+ }
429
+ }
430
+
431
  wp_send_json( array(
432
  'status' => $updated,
433
  'markup' => $this->_load( 'onpage/onpage-preview', array(
456
  *
457
  * @param string $type Post type
458
  *
459
+ * @return WP_Post
460
  */
461
  private function _get_random_post( $type = 'post' ) {
462
  $args = array(
470
  $q = new WP_Query( $args );
471
 
472
  return ! empty( $q->post )
473
+ ? $q->post
474
+ : null;
475
  }
476
 
477
  /**
479
  *
480
  * @param string $type Taxonomy type
481
  *
482
+ * @return WP_Term
483
  */
484
  private function _get_random_term( $type = 'category' ) {
485
  $terms = get_terms(
489
  )
490
  );
491
  if ( empty( $terms ) ) {
492
+ return null;
493
  }
494
 
495
  shuffle( $terms );
496
 
497
+ return $terms[0];
498
  }
499
 
500
  /**
507
 
508
  $arguments = array(
509
  'macros' => self::get_macros(),
510
+ 'meta_robots_main_blog_archive' => self::get_robots_options_for( 'main_blog_archive', true, esc_html__( 'this website' ) ),
511
  );
512
 
513
  foreach ( $this->_get_tax_options( 'meta_robots_' ) as $option => $tax ) {
514
  $tax = str_replace( '-', '_', $tax );
515
+ $tax_object = get_taxonomy( $tax );
516
  if ( empty( $arguments[ $option ] ) ) {
517
+ $tax_label = empty( $tax_object->label ) ? '' : $tax_object->label;
518
+ $arguments[ $option ] = self::get_robots_options_for( $tax, true, strtolower( $tax_label ) );
519
  }
520
  }
521
 
522
  foreach ( $this->_get_other_types_options( 'meta_robots_' ) as $option => $value ) {
523
+ $context_strings = $this->_get_other_types_options_context( 'meta_robots_' );
524
  if ( empty( $arguments[ $option ] ) ) {
525
+ $arguments[ $option ] = self::get_robots_options_for( $value, true, smartcrawl_get_array_value( $context_strings, $option ) );
526
  }
527
  }
528
 
529
  $archive_post_types = smartcrawl_get_archive_post_type_labels();
530
  foreach ( $archive_post_types as $archive_post_type => $archive_post_type_label ) {
531
+ $pt_archive_context = sprintf( esc_html__( '%s archive' ), strtolower( $archive_post_type_label ) );
532
+ $arguments['archive_post_type_robots'][ $archive_post_type ] = self::get_robots_options_for( $archive_post_type, true, $pt_archive_context );
533
  }
534
  $arguments['archive_post_types'] = $archive_post_types;
535
 
536
+ $arguments['meta_robots_search'] = self::get_robots_options_for(
537
+ 'search',
538
+ false,
539
+ esc_html__( 'search page' )
540
+ );
541
 
542
  // Allow for post type options
543
+ foreach ( get_post_types( array( 'public' => true ), 'objects' ) as $post_type ) {
544
+ /**
545
+ * @var $post_type WP_Post_Type
546
+ */
547
+ $arguments['post_robots'][ $post_type->name ] = self::get_robots_options_for( $post_type->name, false, strtolower( $post_type->label ) );
548
  }
549
 
550
  $arguments['radio_options'] = array(
561
 
562
  $arguments['show_homepage_options'] = $this->_show_homepage_options();
563
 
564
+ $arguments['active_tab'] = $this->_get_active_tab( 'tab_homepage' );
565
+
566
+ $arguments['meta_robots_bp_groups'] = self::get_robots_options_for(
567
+ 'bp_groups',
568
+ false,
569
+ esc_html__( 'BuddyPress groups' )
570
+ );
571
+
572
+ $arguments['meta_robots_bp_profile'] = self::get_robots_options_for(
573
+ 'bp_profile',
574
+ false,
575
+ esc_html__( 'BuddyPress profile' )
576
+ );
577
 
578
+ wp_enqueue_script( Smartcrawl_Controller_Assets::ONPAGE_JS );
579
  $this->_render_page( 'onpage/onpage-settings', $arguments );
580
  }
581
 
630
  }
631
 
632
  private function _show_homepage_options() {
633
+ if ( is_multisite() && smartcrawl_is_switch_active( 'SMARTCRAWL_SITEWIDE' ) ) {
634
+ return true;
 
 
635
  }
636
 
637
+ return 'posts' === get_option( 'show_on_front' );
638
  }
639
 
640
  /**
779
 
780
  }
781
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
782
  /**
783
  * @return array
784
  */
786
  return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-onpage-nonce' ) ? $_POST : array();
787
  }
788
  }
 
includes/admin/settings/settings.php CHANGED
@@ -21,21 +21,7 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
21
  * @return array Validated input
22
  */
23
  public function validate( $input ) {
24
- $result = array();
25
- $saving_user_roles = isset( $input['saving_user_roles'] ) && $input['saving_user_roles'];
26
-
27
- // The options page is broken down into two parts. The following operation fills in option values from the missing part.
28
- if ( $saving_user_roles ) {
29
- $input = wp_parse_args(
30
- $input,
31
- self::get_specific_options( $this->option_name )
32
- );
33
- } else {
34
- $input = wp_parse_args(
35
- $input,
36
- $this->get_old_user_role_options()
37
- );
38
- }
39
 
40
  if ( ! empty( $input['wds_settings-setup'] ) ) {
41
  $result['wds_settings-setup'] = true;
@@ -78,7 +64,7 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
78
  'secret-key',
79
  );
80
  foreach ( $strings as $str ) {
81
- if ( ! empty( $input[ $str ] ) ) {
82
  $result[ $str ] = sanitize_text_field( $input[ $str ] );
83
  }
84
  }
@@ -107,26 +93,6 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
107
  return $result;
108
  }
109
 
110
- private function get_old_user_role_options() {
111
- $option_keys = array(
112
- 'seo_metabox_permission_level',
113
- 'seo_metabox_301_permission_level',
114
- 'urlmetrics_metabox_permission_level',
115
- );
116
-
117
- $old_options = self::get_specific_options( $this->option_name );
118
-
119
- $user_role_options = array();
120
- foreach ( $option_keys as $option_key ) {
121
- $option_value = smartcrawl_get_array_value( $old_options, $option_key );
122
- if ( $option_value ) {
123
- $user_role_options[ $option_key ] = $option_value;
124
- }
125
- }
126
-
127
- return $user_role_options;
128
- }
129
-
130
  /**
131
  * Get a list of permission contexts used for roles filtering
132
  *
@@ -245,7 +211,6 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
245
  $this->name = 'settings';
246
  $this->slug = Smartcrawl_Settings::TAB_SETTINGS;
247
  $this->action_url = admin_url( 'options.php' );
248
- $this->title = __( 'Settings', 'wds' );
249
  $this->page_title = __( 'SmartCrawl Wizard: Settings', 'wds' );
250
 
251
  add_action( 'admin_init', array( $this, 'activate_component' ) );
@@ -264,6 +229,10 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
264
  parent::init();
265
  }
266
 
 
 
 
 
267
  private function display_single_site_import_notice() {
268
  // Always display on non-multisite
269
  return ! is_multisite()
@@ -308,8 +277,6 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
308
 
309
  $arguments['default_roles'] = $this->_get_filtered_roles();
310
 
311
- $arguments['active_components'] = Smartcrawl_Settings::get_known_components();
312
-
313
  $arguments['slugs'] = array(
314
  Smartcrawl_Settings::TAB_CHECKUP => __( 'SEO Checkup', 'wds' ),
315
  Smartcrawl_Settings::TAB_ONPAGE => __( 'Title & Meta', 'wds' ),
@@ -332,7 +299,6 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
332
 
333
  $arguments['wds_sitewide_mode'] = smartcrawl_is_switch_active( 'SMARTCRAWL_SITEWIDE' ) || (bool) get_site_option( 'wds_sitewide_mode' );
334
 
335
- $smartcrawl_options = Smartcrawl_Settings::get_options();
336
  $sitemap_settings = Smartcrawl_Sitemap_Settings::get_instance();
337
  $arguments['sitemap_option_name'] = $sitemap_settings->option_name;
338
 
@@ -341,9 +307,9 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
341
  'home' => __( 'Home page', 'wds' ),
342
  );
343
 
344
- $arguments['active_tab'] = $this->_get_last_active_tab( 'tab_general_settings' );
345
 
346
- wp_enqueue_script( 'wds-admin-settings' );
347
  $this->_render_page( 'settings/settings', $arguments );
348
  }
349
 
@@ -397,10 +363,6 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
397
  $this->options = self::get_specific_options( $this->option_name );
398
 
399
  if ( empty( $this->options ) ) {
400
- if ( empty( $this->options['onpage'] ) ) {
401
- $this->options['onpage'] = 1;
402
- }
403
-
404
  if ( empty( $this->options['autolinks'] ) ) {
405
  $this->options['autolinks'] = 0;
406
  }
@@ -413,13 +375,17 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
413
  $this->options['sitemap'] = 0;
414
  }
415
 
416
- if ( empty( $this->options['social'] ) ) {
417
- $this->options['social'] = 1;
418
  }
419
 
420
  if ( empty( $this->options['checkup'] ) ) {
421
  $this->options['checkup'] = 0;
422
  }
 
 
 
 
423
  }
424
 
425
  if ( empty( $this->options['seo_metabox_permission_level'] ) ) {
@@ -488,7 +454,7 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
488
 
489
  $auto_import_url = sprintf(
490
  '<a href="%s">%s</a>',
491
- Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SETTINGS ) . '#tab_import_export',
492
  esc_html__( 'auto-import', 'wds' )
493
  );
494
  $message = sprintf(
@@ -507,7 +473,7 @@ class Smartcrawl_Settings_Settings extends Smartcrawl_Settings_Admin {
507
  ?>
508
  <div class="notice-warning notice is-dismissible wds-native-dismissible-notice"
509
  data-message-key="<?php echo esc_attr( $message_key ); ?>">
510
- <p><?php echo wp_kses_post($message); ?></p>
511
  </div>
512
  <?php
513
  }
21
  * @return array Validated input
22
  */
23
  public function validate( $input ) {
24
+ $result = self::get_specific_options( $this->option_name );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  if ( ! empty( $input['wds_settings-setup'] ) ) {
27
  $result['wds_settings-setup'] = true;
64
  'secret-key',
65
  );
66
  foreach ( $strings as $str ) {
67
+ if ( isset( $input[ $str ] ) ) {
68
  $result[ $str ] = sanitize_text_field( $input[ $str ] );
69
  }
70
  }
93
  return $result;
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  /**
97
  * Get a list of permission contexts used for roles filtering
98
  *
211
  $this->name = 'settings';
212
  $this->slug = Smartcrawl_Settings::TAB_SETTINGS;
213
  $this->action_url = admin_url( 'options.php' );
 
214
  $this->page_title = __( 'SmartCrawl Wizard: Settings', 'wds' );
215
 
216
  add_action( 'admin_init', array( $this, 'activate_component' ) );
229
  parent::init();
230
  }
231
 
232
+ public function get_title() {
233
+ return __( 'Settings', 'wds' );
234
+ }
235
+
236
  private function display_single_site_import_notice() {
237
  // Always display on non-multisite
238
  return ! is_multisite()
277
 
278
  $arguments['default_roles'] = $this->_get_filtered_roles();
279
 
 
 
280
  $arguments['slugs'] = array(
281
  Smartcrawl_Settings::TAB_CHECKUP => __( 'SEO Checkup', 'wds' ),
282
  Smartcrawl_Settings::TAB_ONPAGE => __( 'Title & Meta', 'wds' ),
299
 
300
  $arguments['wds_sitewide_mode'] = smartcrawl_is_switch_active( 'SMARTCRAWL_SITEWIDE' ) || (bool) get_site_option( 'wds_sitewide_mode' );
301
 
 
302
  $sitemap_settings = Smartcrawl_Sitemap_Settings::get_instance();
303
  $arguments['sitemap_option_name'] = $sitemap_settings->option_name;
304
 
307
  'home' => __( 'Home page', 'wds' ),
308
  );
309
 
310
+ $arguments['active_tab'] = $this->_get_active_tab( 'tab_general_settings' );
311
 
312
+ wp_enqueue_script( Smartcrawl_Controller_Assets::SETTINGS_PAGE_JS );
313
  $this->_render_page( 'settings/settings', $arguments );
314
  }
315
 
363
  $this->options = self::get_specific_options( $this->option_name );
364
 
365
  if ( empty( $this->options ) ) {
 
 
 
 
366
  if ( empty( $this->options['autolinks'] ) ) {
367
  $this->options['autolinks'] = 0;
368
  }
375
  $this->options['sitemap'] = 0;
376
  }
377
 
378
+ if ( empty( $this->options['onpage'] ) ) {
379
+ $this->options['onpage'] = 1;
380
  }
381
 
382
  if ( empty( $this->options['checkup'] ) ) {
383
  $this->options['checkup'] = 0;
384
  }
385
+
386
+ if ( empty( $this->options['social'] ) ) {
387
+ $this->options['social'] = 1;
388
+ }
389
  }
390
 
391
  if ( empty( $this->options['seo_metabox_permission_level'] ) ) {
454
 
455
  $auto_import_url = sprintf(
456
  '<a href="%s">%s</a>',
457
+ Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SETTINGS ) . '&tab=tab_import_export',
458
  esc_html__( 'auto-import', 'wds' )
459
  );
460
  $message = sprintf(
473
  ?>
474
  <div class="notice-warning notice is-dismissible wds-native-dismissible-notice"
475
  data-message-key="<?php echo esc_attr( $message_key ); ?>">
476
+ <p><?php echo wp_kses_post( $message ); ?></p>
477
  </div>
478
  <?php
479
  }
includes/admin/settings/sitemap.php CHANGED
@@ -17,6 +17,8 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
17
  */
18
  private static $_instance;
19
 
 
 
20
  /**
21
  * Singleton instance getter
22
  *
@@ -104,10 +106,10 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
104
 
105
  // Meta tags.
106
  if ( ! empty( $input['verification-google-meta'] ) ) {
107
- $result['verification-google-meta'] = smartcrawl_is_valid_meta_tag($input['verification-google-meta']) ? $input['verification-google-meta'] : '';
108
  }
109
  if ( ! empty( $input['verification-bing-meta'] ) ) {
110
- $result['verification-bing-meta'] = smartcrawl_is_valid_meta_tag($input['verification-bing-meta']) ? $input['verification-bing-meta'] : '';
111
  }
112
 
113
  $custom_values_key = 'additional-metas';
@@ -287,14 +289,35 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
287
  $this->name = Smartcrawl_Settings::COMP_SITEMAP;
288
  $this->slug = Smartcrawl_Settings::TAB_SITEMAP;
289
  $this->action_url = admin_url( 'options.php' );
290
- $this->title = __( 'Sitemap', 'wds' );
291
  $this->page_title = __( 'SmartCrawl Wizard: Sitemap', 'wds' );
292
 
293
- add_action( 'wp_ajax_wds-toggle-sitemap-status', array( $this, 'json_toggle_sitemap_status' ) );
 
294
 
295
  parent::init();
296
  }
297
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  /**
299
  * Process run action
300
  *
@@ -321,16 +344,50 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
321
  * Runs SEO Audit crawl
322
  */
323
  public function run_crawl() {
 
324
  if ( current_user_can( 'manage_options' ) ) {
325
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
326
- $service->start();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  }
328
- $url = remove_query_arg( array( 'run-crawl', '_wds_nonce' ) );
329
- if ( preg_match( '/page=wds_sitemap/', $url ) && ! preg_match( '/#tab_url_crawler/', $url ) ) {
330
- $url .= '#tab_url_crawler';
 
 
 
 
 
 
 
 
 
331
  }
332
- wp_safe_redirect( esc_url( $url ) );
333
- die;
334
  }
335
 
336
  /**
@@ -363,9 +420,9 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
363
  $arguments['taxonomies'][ $opt ] = $taxonomy;
364
  }
365
 
366
- $arguments['wds_buddypress'] = $this->_get_buddyress_template_values();
367
 
368
- $arguments['active_tab'] = $this->_get_last_active_tab( 'tab_sitemap' );
369
 
370
  $extra_urls = Smartcrawl_Xml_Sitemap::get_extra_urls();
371
  if ( is_array( $extra_urls ) ) {
@@ -388,7 +445,7 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
388
  : '';
389
  }
390
 
391
- wp_enqueue_script( 'wds-admin-sitemaps' );
392
  $this->_render_page( 'sitemap/sitemap-settings', $arguments );
393
  }
394
 
@@ -478,29 +535,25 @@ class Smartcrawl_Sitemap_Settings extends Smartcrawl_Settings_Admin {
478
  }
479
 
480
  /**
481
- * Handles sitemap active toggle request
482
  */
483
- public function json_toggle_sitemap_status() {
484
- $data = $this->get_request_data();
485
- $status = (bool) smartcrawl_get_array_value( $data, 'sitemap_active' );
486
- $return = array( 'success' => false );
487
-
488
- if ( null === $status ) {
489
- wp_send_json( $return );
490
-
491
- return;
492
  }
493
 
494
- $options = self::get_specific_options( 'wds_settings_options' );
495
- $options['sitemap'] = $status;
496
- self::update_specific_options( 'wds_settings_options', $options );
497
-
498
- $return['success'] = true;
499
- wp_send_json( $return );
500
  }
501
 
502
- private function get_request_data() {
503
- return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-nonce' ) ? stripslashes_deep( $_POST ) : array();
 
 
 
 
 
 
 
504
  }
505
  }
506
 
17
  */
18
  private static $_instance;
19
 
20
+ private $view_defaults = array();
21
+
22
  /**
23
  * Singleton instance getter
24
  *
106
 
107
  // Meta tags.
108
  if ( ! empty( $input['verification-google-meta'] ) ) {
109
+ $result['verification-google-meta'] = smartcrawl_is_valid_meta_tag( $input['verification-google-meta'] ) ? $input['verification-google-meta'] : '';
110
  }
111
  if ( ! empty( $input['verification-bing-meta'] ) ) {
112
+ $result['verification-bing-meta'] = smartcrawl_is_valid_meta_tag( $input['verification-bing-meta'] ) ? $input['verification-bing-meta'] : '';
113
  }
114
 
115
  $custom_values_key = 'additional-metas';
289
  $this->name = Smartcrawl_Settings::COMP_SITEMAP;
290
  $this->slug = Smartcrawl_Settings::TAB_SITEMAP;
291
  $this->action_url = admin_url( 'options.php' );
 
292
  $this->page_title = __( 'SmartCrawl Wizard: Sitemap', 'wds' );
293
 
294
+ add_action( 'admin_init', array( $this, 'deactivate_sitemap_component' ) );
295
+ add_action( 'all_admin_notices', array( $this, 'add_crawl_status_message' ), 10 );
296
 
297
  parent::init();
298
  }
299
 
300
+ public function get_title() {
301
+ return __( 'Sitemap', 'wds' );
302
+ }
303
+
304
+ public function deactivate_sitemap_component() {
305
+ $data = $this->get_request_data();
306
+ if ( isset( $data['deactivate-sitemap-component'] ) ) {
307
+ Smartcrawl_Settings::deactivate_component( 'sitemap' );
308
+ $sitemaps_urls = wp_get_referer();
309
+
310
+ wp_redirect( esc_url_raw( add_query_arg( array(), $sitemaps_urls ) ) );
311
+ die();
312
+ }
313
+ }
314
+
315
+ private function get_request_data() {
316
+ return isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], $this->option_name . '-options' )
317
+ ? stripslashes_deep( $_POST )
318
+ : array();
319
+ }
320
+
321
  /**
322
  * Process run action
323
  *
344
  * Runs SEO Audit crawl
345
  */
346
  public function run_crawl() {
347
+ $error = '';
348
  if ( current_user_can( 'manage_options' ) ) {
349
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
350
+ $response = $service->start();
351
+ $error = $this->get_error( $response );
352
+ }
353
+ $url = add_query_arg(
354
+ array(
355
+ 'tab' => 'tab_url_crawler',
356
+ 'crawl-in-progress' => empty( $error ) ? '1' : '0',
357
+ 'message' => $error,
358
+ ),
359
+ Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SITEMAP )
360
+ );
361
+ wp_safe_redirect( esc_url_raw( $url ) );
362
+ die;
363
+ }
364
+
365
+ private function get_error( $response ) {
366
+ if ( ! empty( $response['data']['status'] ) && (int) $response['data']['status'] > 399 ) {
367
+ return (string) smartcrawl_get_array_value( $response, 'message' );
368
+ }
369
+
370
+ return '';
371
+ }
372
+
373
+ public function add_crawl_status_message() {
374
+ $crawl_in_progress = smartcrawl_get_array_value( $_GET, 'crawl-in-progress' );
375
+ if ( is_null( $crawl_in_progress ) ) {
376
+ return;
377
  }
378
+
379
+ $crawl_in_progress = (boolean) $crawl_in_progress;
380
+ if ( $crawl_in_progress ) {
381
+ $class = 'sui-notice-info';
382
+ $message = esc_html__( 'Crawl started successfully', 'wds' );
383
+ } else {
384
+ $class = 'sui-notice-error';
385
+ $message = (string) smartcrawl_get_array_value( $_GET, 'message' );
386
+ }
387
+
388
+ if ( $message ) {
389
+ $this->_render( 'floating-message', array( 'class' => $class, 'message' => $message ) );
390
  }
 
 
391
  }
392
 
393
  /**
420
  $arguments['taxonomies'][ $opt ] = $taxonomy;
421
  }
422
 
423
+ $arguments['smartcrawl_buddypress'] = $this->_get_buddyress_template_values();
424
 
425
+ $arguments['active_tab'] = $this->_get_active_tab( 'tab_sitemap' );
426
 
427
  $extra_urls = Smartcrawl_Xml_Sitemap::get_extra_urls();
428
  if ( is_array( $extra_urls ) ) {
445
  : '';
446
  }
447
 
448
+ wp_enqueue_script( Smartcrawl_Controller_Assets::SITEMAPS_PAGE_JS );
449
  $this->_render_page( 'sitemap/sitemap-settings', $arguments );
450
  }
451
 
535
  }
536
 
537
  /**
538
+ * TODO make this caching a part of Smartcrawl_Renderable
539
  */
540
+ protected function _get_view_defaults() {
541
+ if ( empty( $this->view_defaults ) ) {
542
+ $this->view_defaults = $this->populate_view_defaults();
 
 
 
 
 
 
543
  }
544
 
545
+ return $this->view_defaults;
 
 
 
 
 
546
  }
547
 
548
+ protected function populate_view_defaults() {
549
+ $args = parent::_get_view_defaults();
550
+
551
+ $view = smartcrawl_get_array_value( $args, '_view' );
552
+ $view = empty( $view ) ? array() : $view;
553
+ $seo_service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
554
+ $view['crawl_report'] = $seo_service->get_report();
555
+
556
+ return array( '_view' => $view );
557
  }
558
  }
559
 
includes/admin/settings/social.php CHANGED
@@ -34,17 +34,22 @@ class Smartcrawl_Social_Settings extends Smartcrawl_Settings_Admin {
34
  'instagram_url',
35
  'linkedin_url',
36
  'pinterest_url',
37
- 'gplus_url',
38
  'youtube_url',
39
  );
40
  foreach ( $urls as $type ) {
41
  if ( empty( $input[ $type ] ) ) {
42
  continue;
43
  }
44
- if ( ! preg_match( '/^https?:\/\//', $input[ $type ] ) ) {
 
 
 
 
 
 
45
  continue;
46
  }
47
- $result[ $type ] = $input[ $type ];
48
  }
49
 
50
  if ( ! empty( $input['sitename'] ) ) {
@@ -142,12 +147,15 @@ class Smartcrawl_Social_Settings extends Smartcrawl_Settings_Admin {
142
  $this->name = Smartcrawl_Settings::COMP_SOCIAL;
143
  $this->slug = Smartcrawl_Settings::TAB_SOCIAL;
144
  $this->action_url = admin_url( 'options.php' );
145
- $this->title = __( 'Social', 'wds' );
146
  $this->page_title = __( 'SmartCrawl Wizard: Social', 'wds' );
147
 
148
  parent::init();
149
  }
150
 
 
 
 
 
151
  /**
152
  * Add admin settings page
153
  */
@@ -163,8 +171,8 @@ class Smartcrawl_Social_Settings extends Smartcrawl_Settings_Admin {
163
  $arguments = array(
164
  'options' => $options,
165
  );
166
- $arguments['active_tab'] = $this->_get_last_active_tab( 'tab_accounts' );
167
- wp_enqueue_script( 'wds-admin-social' );
168
  wp_enqueue_media();
169
 
170
  $this->_render_page( 'social/social-settings', $arguments );
@@ -189,7 +197,6 @@ class Smartcrawl_Social_Settings extends Smartcrawl_Settings_Admin {
189
  'instagram_url' => '',
190
  'linkedin_url' => '',
191
  'pinterest_url' => '',
192
- 'gplus_url' => '',
193
  'youtube_url' => '',
194
  // Twitter
195
  'twitter-card-enable' => false,
34
  'instagram_url',
35
  'linkedin_url',
36
  'pinterest_url',
 
37
  'youtube_url',
38
  );
39
  foreach ( $urls as $type ) {
40
  if ( empty( $input[ $type ] ) ) {
41
  continue;
42
  }
43
+ $social_url = trim( $input[ $type ] );
44
+ if ( ! preg_match( '/^https?:\/\//', $social_url ) ) {
45
+ add_settings_error(
46
+ $this->option_name,
47
+ 'social_url_invalid',
48
+ esc_html__( 'Some social URLs could not be saved. Please try again.', 'wds' )
49
+ );
50
  continue;
51
  }
52
+ $result[ $type ] = $social_url;
53
  }
54
 
55
  if ( ! empty( $input['sitename'] ) ) {
147
  $this->name = Smartcrawl_Settings::COMP_SOCIAL;
148
  $this->slug = Smartcrawl_Settings::TAB_SOCIAL;
149
  $this->action_url = admin_url( 'options.php' );
 
150
  $this->page_title = __( 'SmartCrawl Wizard: Social', 'wds' );
151
 
152
  parent::init();
153
  }
154
 
155
+ public function get_title() {
156
+ return __( 'Social', 'wds' );
157
+ }
158
+
159
  /**
160
  * Add admin settings page
161
  */
171
  $arguments = array(
172
  'options' => $options,
173
  );
174
+ $arguments['active_tab'] = $this->_get_active_tab( 'tab_accounts' );
175
+ wp_enqueue_script( Smartcrawl_Controller_Assets::SOCIAL_PAGE_JS );
176
  wp_enqueue_media();
177
 
178
  $this->_render_page( 'social/social-settings', $arguments );
197
  'instagram_url' => '',
198
  'linkedin_url' => '',
199
  'pinterest_url' => '',
 
200
  'youtube_url' => '',
201
  // Twitter
202
  'twitter-card-enable' => false,
includes/admin/shared-ui/font/WPMU DEV Dashboard.json DELETED
@@ -1,1396 +0,0 @@
1
- {
2
- "metadata": {
3
- "name": "WPMU DEV Dashboard",
4
- "lastOpened": 1446220177291,
5
- "created": 1446220144047
6
- },
7
- "iconSets": [
8
- {
9
- "selection": [
10
- {
11
- "order": 77,
12
- "id": 70,
13
- "name": "comment",
14
- "prevSize": 32,
15
- "code": 65,
16
- "tempChar": ""
17
- },
18
- {
19
- "order": 45,
20
- "id": 8,
21
- "prevSize": 32,
22
- "code": 109,
23
- "name": "speach",
24
- "tempChar": ""
25
- },
26
- {
27
- "id": 21,
28
- "order": 40,
29
- "prevSize": 32,
30
- "code": 61,
31
- "name": "speach_alt",
32
- "tempChar": ""
33
- },
34
- {
35
- "order": 81,
36
- "id": 68,
37
- "name": "download",
38
- "prevSize": 32,
39
- "code": 66,
40
- "tempChar": ""
41
- },
42
- {
43
- "id": 32,
44
- "order": 10,
45
- "prevSize": 32,
46
- "code": 105,
47
- "name": "download_alt",
48
- "tempChar": ""
49
- },
50
- {
51
- "order": 101,
52
- "id": 50,
53
- "name": "upload",
54
- "prevSize": 32,
55
- "code": 86,
56
- "tempChar": ""
57
- },
58
- {
59
- "order": 82,
60
- "id": 67,
61
- "name": "error",
62
- "prevSize": 32,
63
- "code": 69,
64
- "tempChar": ""
65
- },
66
- {
67
- "order": 90,
68
- "id": 63,
69
- "name": "archive",
70
- "prevSize": 32,
71
- "code": 79,
72
- "tempChar": ""
73
- },
74
- {
75
- "id": 19,
76
- "order": 25,
77
- "prevSize": 32,
78
- "code": 57,
79
- "name": "logo",
80
- "tempChar": ""
81
- },
82
- {
83
- "id": 20,
84
- "order": 26,
85
- "prevSize": 32,
86
- "code": 48,
87
- "name": "logo_alt",
88
- "tempChar": ""
89
- },
90
- {
91
- "order": 95,
92
- "id": 48,
93
- "name": "wordpress",
94
- "prevSize": 32,
95
- "code": 71,
96
- "tempChar": ""
97
- },
98
- {
99
- "order": 85,
100
- "id": 66,
101
- "name": "facebook",
102
- "prevSize": 32,
103
- "code": 70,
104
- "tempChar": ""
105
- },
106
- {
107
- "order": 88,
108
- "id": 51,
109
- "name": "twitter",
110
- "prevSize": 32,
111
- "code": 73,
112
- "tempChar": ""
113
- },
114
- {
115
- "order": 89,
116
- "id": 64,
117
- "name": "github",
118
- "prevSize": 32,
119
- "code": 74,
120
- "tempChar": ""
121
- },
122
- {
123
- "order": 83,
124
- "id": 54,
125
- "name": "stackoverflow",
126
- "prevSize": 32,
127
- "code": 75,
128
- "tempChar": ""
129
- },
130
- {
131
- "order": 94,
132
- "id": 61,
133
- "name": "linkedin",
134
- "prevSize": 32,
135
- "code": 76,
136
- "tempChar": ""
137
- },
138
- {
139
- "order": 97,
140
- "id": 60,
141
- "name": "medium",
142
- "prevSize": 32,
143
- "code": 77,
144
- "tempChar": ""
145
- },
146
- {
147
- "order": 100,
148
- "id": 57,
149
- "name": "quora",
150
- "prevSize": 32,
151
- "code": 81,
152
- "tempChar": ""
153
- },
154
- {
155
- "order": 104,
156
- "id": 73,
157
- "name": "seo",
158
- "prevSize": 32,
159
- "code": 83,
160
- "tempChar": ""
161
- },
162
- {
163
- "order": 98,
164
- "id": 59,
165
- "name": "minify",
166
- "prevSize": 32,
167
- "code": 78,
168
- "tempChar": ""
169
- },
170
- {
171
- "order": 92,
172
- "id": 49,
173
- "name": "uptime",
174
- "prevSize": 32,
175
- "code": 85,
176
- "tempChar": ""
177
- },
178
- {
179
- "order": 96,
180
- "id": 47,
181
- "name": "world",
182
- "prevSize": 32,
183
- "code": 87,
184
- "tempChar": ""
185
- },
186
- {
187
- "order": 50,
188
- "id": 3,
189
- "prevSize": 32,
190
- "code": 89,
191
- "name": "pos_footer",
192
- "tempChar": ""
193
- },
194
- {
195
- "order": 49,
196
- "id": 4,
197
- "prevSize": 32,
198
- "code": 88,
199
- "name": "pos_middle",
200
- "tempChar": ""
201
- },
202
- {
203
- "order": 48,
204
- "id": 5,
205
- "prevSize": 32,
206
- "code": 67,
207
- "name": "pos_header",
208
- "tempChar": ""
209
- },
210
- {
211
- "order": 43,
212
- "id": 6,
213
- "prevSize": 32,
214
- "code": 98,
215
- "name": "book",
216
- "tempChar": ""
217
- },
218
- {
219
- "order": 46,
220
- "id": 9,
221
- "prevSize": 32,
222
- "code": 110,
223
- "name": "support",
224
- "tempChar": ""
225
- },
226
- {
227
- "id": 33,
228
- "order": 11,
229
- "prevSize": 32,
230
- "code": 106,
231
- "name": "rocket",
232
- "tempChar": ""
233
- },
234
- {
235
- "order": 52,
236
- "id": 7,
237
- "prevSize": 32,
238
- "code": 118,
239
- "name": "rocket_alt",
240
- "tempChar": ""
241
- },
242
- {
243
- "id": 25,
244
- "order": 3,
245
- "prevSize": 32,
246
- "code": 97,
247
- "name": "lock",
248
- "tempChar": ""
249
- },
250
- {
251
- "id": 26,
252
- "order": 4,
253
- "prevSize": 32,
254
- "code": 99,
255
- "name": "unlock",
256
- "tempChar": ""
257
- },
258
- {
259
- "id": 27,
260
- "order": 5,
261
- "prevSize": 32,
262
- "code": 100,
263
- "name": "plugin",
264
- "tempChar": ""
265
- },
266
- {
267
- "id": 39,
268
- "order": 17,
269
- "prevSize": 32,
270
- "code": 114,
271
- "name": "caret_up",
272
- "tempChar": ""
273
- },
274
- {
275
- "order": 103,
276
- "id": 71,
277
- "name": "caret_right",
278
- "prevSize": 32,
279
- "code": 51,
280
- "tempChar": ""
281
- },
282
- {
283
- "id": 28,
284
- "order": 6,
285
- "prevSize": 32,
286
- "code": 101,
287
- "name": "caret_down",
288
- "tempChar": ""
289
- },
290
- {
291
- "order": 102,
292
- "id": 72,
293
- "name": "caret_left",
294
- "prevSize": 32,
295
- "code": 124,
296
- "tempChar": ""
297
- },
298
- {
299
- "id": 29,
300
- "order": 7,
301
- "prevSize": 32,
302
- "code": 102,
303
- "name": "power",
304
- "tempChar": ""
305
- },
306
- {
307
- "id": 31,
308
- "order": 9,
309
- "prevSize": 32,
310
- "code": 104,
311
- "name": "radio_default, radio",
312
- "tempChar": ""
313
- },
314
- {
315
- "id": 30,
316
- "order": 8,
317
- "prevSize": 32,
318
- "code": 103,
319
- "name": "radio_checked",
320
- "tempChar": ""
321
- },
322
- {
323
- "id": 45,
324
- "order": 23,
325
- "prevSize": 32,
326
- "code": 121,
327
- "name": "cross",
328
- "tempChar": ""
329
- },
330
- {
331
- "id": 46,
332
- "order": 24,
333
- "prevSize": 32,
334
- "code": 122,
335
- "name": "tick",
336
- "tempChar": ""
337
- },
338
- {
339
- "id": 34,
340
- "order": 12,
341
- "prevSize": 32,
342
- "code": 107,
343
- "name": "search",
344
- "tempChar": ""
345
- },
346
- {
347
- "id": 37,
348
- "order": 15,
349
- "prevSize": 32,
350
- "code": 112,
351
- "name": "info",
352
- "tempChar": ""
353
- },
354
- {
355
- "id": 10,
356
- "order": 41,
357
- "prevSize": 32,
358
- "code": 49,
359
- "name": "devman",
360
- "tempChar": ""
361
- },
362
- {
363
- "id": 16,
364
- "order": 35,
365
- "prevSize": 32,
366
- "code": 55,
367
- "name": "upfront",
368
- "tempChar": ""
369
- },
370
- {
371
- "order": 93,
372
- "id": 62,
373
- "name": "hummingbird",
374
- "prevSize": 32,
375
- "code": 72,
376
- "tempChar": ""
377
- },
378
- {
379
- "order": 80,
380
- "id": 69,
381
- "name": "defender",
382
- "prevSize": 32,
383
- "code": 68,
384
- "tempChar": ""
385
- },
386
- {
387
- "id": 35,
388
- "order": 13,
389
- "prevSize": 32,
390
- "code": 108,
391
- "name": "theme",
392
- "tempChar": ""
393
- },
394
- {
395
- "order": 99,
396
- "id": 58,
397
- "name": "pencil",
398
- "prevSize": 32,
399
- "code": 80,
400
- "tempChar": ""
401
- },
402
- {
403
- "order": 84,
404
- "id": 53,
405
- "name": "star",
406
- "prevSize": 32,
407
- "code": 90,
408
- "tempChar": ""
409
- },
410
- {
411
- "order": 87,
412
- "id": 52,
413
- "name": "trash",
414
- "prevSize": 32,
415
- "code": 84,
416
- "tempChar": ""
417
- },
418
- {
419
- "order": 78,
420
- "id": 56,
421
- "name": "recycle",
422
- "prevSize": 32,
423
- "code": 82,
424
- "tempChar": ""
425
- },
426
- {
427
- "order": 86,
428
- "id": 65,
429
- "name": "fix",
430
- "prevSize": 32,
431
- "code": 50,
432
- "tempChar": ""
433
- },
434
- {
435
- "id": 36,
436
- "order": 14,
437
- "prevSize": 32,
438
- "code": 111,
439
- "name": "edit",
440
- "tempChar": ""
441
- },
442
- {
443
- "id": 40,
444
- "order": 18,
445
- "prevSize": 32,
446
- "code": 115,
447
- "name": "options",
448
- "tempChar": ""
449
- },
450
- {
451
- "id": 41,
452
- "order": 19,
453
- "prevSize": 32,
454
- "code": 116,
455
- "name": "cog",
456
- "tempChar": ""
457
- },
458
- {
459
- "id": 38,
460
- "order": 47,
461
- "prevSize": 32,
462
- "code": 113,
463
- "name": "badge",
464
- "tempChar": ""
465
- },
466
- {
467
- "id": 42,
468
- "order": 20,
469
- "prevSize": 32,
470
- "code": 117,
471
- "name": "cylinder",
472
- "tempChar": ""
473
- },
474
- {
475
- "id": 44,
476
- "order": 22,
477
- "prevSize": 32,
478
- "code": 120,
479
- "name": "trophy",
480
- "tempChar": ""
481
- },
482
- {
483
- "id": 43,
484
- "order": 21,
485
- "prevSize": 32,
486
- "code": 119,
487
- "name": "bell",
488
- "tempChar": ""
489
- }
490
- ],
491
- "id": 3,
492
- "metadata": {
493
- "name": "WPMU DEV App Icons",
494
- "importSize": {
495
- "width": 32,
496
- "height": 32
497
- }
498
- },
499
- "height": 1024,
500
- "prevSize": 32,
501
- "icons": [
502
- {
503
- "id": 70,
504
- "paths": [
505
- "M0 190.573c0.213-105.296 85.621-190.573 190.947-190.573 0.066 0 0.132 0 0.198 0l666.058-0c0.056-0 0.122-0 0.188-0 105.325 0 190.734 85.277 190.947 190.552l0 492.364c0 105.354-85.406 190.76-190.76 190.76h-38.938l-60.279 149.762-146.018-149.762h-421.955c-105.17-0.107-190.385-85.388-190.385-190.572 0-0.066 0-0.132 0-0.198l-0-492.333z"
506
- ],
507
- "attrs": [],
508
- "isMulticolor": false,
509
- "width": 1048,
510
- "grid": 0,
511
- "tags": [
512
- "comment"
513
- ],
514
- "colorPermutations": {}
515
- },
516
- {
517
- "id": 8,
518
- "paths": [
519
- "M699.206 370.919h-345.743c-13.632 0-24.696 11.014-24.696 24.696 0 13.632 11.064 24.696 24.696 24.696h345.743c13.632 0 24.696-11.064 24.696-24.696 0-13.682-11.064-24.696-24.696-24.696z",
520
- "M699.206 667.271h-345.743c-13.632 0-24.696 11.014-24.696 24.696 0 13.632 11.064 24.696 24.696 24.696h345.743c13.632 0 24.696-11.064 24.696-24.696 0-13.682-11.064-24.696-24.696-24.696z",
521
- "M699.206 519.095h-345.743c-13.632 0-24.696 11.014-24.696 24.696 0 13.632 11.064 24.696 24.696 24.696h345.743c13.632 0 24.696-11.064 24.696-24.696 0-13.682-11.064-24.696-24.696-24.696z",
522
- "M501.639 28.88c-272.742 0-493.919 221.226-493.919 493.919 0 109.897 35.908 211.447 96.611 293.437l-51.318 177.218 175.983-58.727c78.089 51.911 171.884 81.991 272.643 81.991 272.742 0 493.919-221.078 493.919-493.919 0-272.693-221.177-493.919-493.919-493.919v0zM501.639 917.935c-78.138 0-153.461-22.671-217.917-65.494-16.398-10.916-35.463-16.497-54.726-16.497-9.681 0-19.362 1.432-28.845 4.297 7.162-28.598 1.185-59.023-16.398-82.781-50.528-68.21-77.249-149.312-77.249-234.661 0-217.868 177.268-395.135 395.135-395.135s395.135 177.268 395.135 395.135c0 217.868-177.268 395.135-395.135 395.135v0z"
523
- ],
524
- "attrs": [],
525
- "isMulticolor": false,
526
- "grid": 0,
527
- "tags": [
528
- "speach"
529
- ],
530
- "colorPermutations": {}
531
- },
532
- {
533
- "id": 21,
534
- "paths": [
535
- "M558 778c-42 14-86 22-134 22-26 0-50-2-76-8-22 20-74 52-150 58-2 2-2 2-4 2-6 0-14-4-4-8 22-14 62-40 62-80-120-52-202-156-202-276 0-174 168-314 374-314 156 0 290 80 346 194 22 2 42 8 60 14-52-148-214-258-406-258-234 0-424 164-424 364 0 120 70 232 186 298-6 6-14 10-22 14-28 16-32 42-28 60 6 20 24 42 58 42 2 0 6-2 8-2 74-6 128-32 160-54 20 2 42 4 62 4 70 0 134-16 192-40-22-8-42-18-58-32zM732 390c138 0 248 94 248 208 0 82-54 152-134 186 10 28 40 50 58 60 10 4 2 8-4 8-2 0-2 0-4-2-62-4-108-26-134-46-10 2-20 2-30 2-138 0-250-92-250-208 0-114 112-208 250-208zM732 340c-166 0-300 116-300 258s134 258 300 258c4 0 10 0 18 0 32 20 80 40 142 44 2 0 4 2 8 2 34 0 52-22 58-42 4-18 0-44-30-60-2-2-2-2-4-4 66-48 106-120 106-198 0-142-134-258-298-258z"
536
- ],
537
- "attrs": [],
538
- "isMulticolor": false,
539
- "tags": [
540
- "speach_alt",
541
- "comment"
542
- ],
543
- "defaultCode": 57345,
544
- "grid": 0,
545
- "colorPermutations": {}
546
- },
547
- {
548
- "id": 68,
549
- "paths": [
550
- "M1050.836 1024h-749.992c-0.424 0.002-0.925 0.003-1.426 0.003-15.013 0-29.805-0.942-44.322-2.77-117.762-14.242-218.304-105.483-247.147-224.715-3.005-14.041-5.359-25.576-7.949-36.169v-69.208c-0.121 0.517 1.417-1.772 2.319-4.359 11.525-110.342 91.606-206.428 199.228-241.984 7.938-1.803 12.284-6.922 12.284-13.057 0-1.006-0.117-1.986-0.338-2.925 0.011-0.63 0.007-1.476 0.007-2.323 0-163.941 132.901-296.842 296.842-296.842 20.495 0 40.506 2.077 59.832 6.032-0.203 0.254 1.768 0.59 3.817 0.59 6.46 0 12.14-3.336 15.413-8.378 26.059-43.611 96.992-96.055 180.393-117.272-11.657 2.522 15.599-5.389 44.039-9.689 10.816-1.059 21.262-1.533 31.817-1.533 18.246 0 36.161 1.416 53.642 4.144 69.441 4.088 148.797 45.322 204.691 107.946 55.785 58.363 89.947 137.21 89.947 224.035 0 13.662-0.846 27.126-2.488 40.343-0.163-0.309-0.348 1.151-0.348 2.653 0 6.791 3.784 12.699 9.359 15.729 68.861 34.597 134.23 117.504 155.763 216.754-1.424-7.797 3.362 11.618 5.916 31.73 1.696 13.937 2.586 28.537 2.586 43.344s-0.889 29.407-2.618 43.748c-15.395 134.38-118.284 249.368-253.362 283.546-10.044 3.904-33.128 8.976-57.16 10.586zM780.359 317.793h-146.42c-12.397 1.14-22.314 11.010-23.532 23.433l-0.009 194.314c-0.974 12.508-10.94 22.506-23.448 23.534l-99.432 0.006c-14.36 0-48.493 0 0 48.728l195.149 196.326c6.226 6.256 14.843 10.128 24.364 10.128s18.139-3.872 24.363-10.127l195.15-194.914c49.199-49.199 11.535-48.728 0-48.728h-97.692c-13.001 0-23.54-10.539-23.54-23.54v-195.384c-0.63-13.496-11.616-24.24-25.165-24.482z"
551
- ],
552
- "attrs": [],
553
- "isMulticolor": false,
554
- "width": 1365,
555
- "grid": 0,
556
- "tags": [
557
- "download"
558
- ],
559
- "colorPermutations": {}
560
- },
561
- {
562
- "id": 32,
563
- "paths": [
564
- "M753.6 848c-174.4 0-318.4 0-492.8 0-16 0-27.2-1.6-28.8-1.6-80-11.2-145.6-70.4-163.2-150.4-1.6-8-3.2-14.4-4.8-22.4 0-14.4 0-30.4 0-44.8 0-1.6 1.6-1.6 1.6-3.2 12.8-78.4 57.6-131.2 132.8-160 6.4-1.6 6.4-4.8 6.4-9.6-1.6-123.2 112-217.6 233.6-193.6 6.4 1.6 9.6 0 14.4-4.8 32-38.4 72-64 120-76.8 9.6-1.6 19.2-4.8 28.8-6.4 25.6-3.2 52.8 1.6 54.4 1.6 54.4 8 99.2 30.4 136 70.4 44.8 49.6 64 105.6 57.6 172.8 0 6.4 1.6 9.6 6.4 12.8 54.4 33.6 88 81.6 102.4 144 1.6 8 3.2 12.8 3.2 20.8 3.2 28.8 0 54.4 0 56-12.8 91.2-78.4 164.8-168 188.8-12.8 3.2-27.2 6.4-40 6.4zM560 400c-32 0-73.6 0-96 0-8 0-16 8-16 16 0 43.2 0 84.8 0 128 0 9.6-8 16-16 16-27.2 0-38.4 0-64 0-9.6 0-32 0 0 32 44.8 44.8 84.8 84.8 128 128 8 8 22.4 9.6 32 0 43.2-43.2 84.8-84.8 128-128 32-32 8-32 0-32-16 0-48 0-64 0-9.6 0-16-8-16-16 0-48 0-80 0-128 0-9.6-8-16-16-16z"
565
- ],
566
- "attrs": [],
567
- "isMulticolor": false,
568
- "tags": [
569
- "download"
570
- ],
571
- "defaultCode": 105,
572
- "grid": 0,
573
- "colorPermutations": {}
574
- },
575
- {
576
- "id": 50,
577
- "paths": [
578
- "M1050.836 1024h-749.992c-0.424 0.002-0.925 0.003-1.426 0.003-15.013 0-29.805-0.942-44.322-2.77-117.762-14.242-218.304-105.483-247.147-224.715-3.005-14.041-5.359-25.576-7.949-36.169v-69.208c-0.121 0.517 1.417-1.772 2.319-4.359 11.525-110.342 91.606-206.428 199.228-241.984 7.938-1.803 12.284-6.922 12.284-13.057 0-1.006-0.117-1.986-0.338-2.925 0.011-0.63 0.007-1.476 0.007-2.323 0-163.941 132.901-296.842 296.842-296.842 20.495 0 40.506 2.077 59.832 6.032-0.203 0.254 1.768 0.59 3.817 0.59 6.46 0 12.14-3.336 15.413-8.378 26.059-43.611 96.992-96.055 180.393-117.272-11.657 2.522 15.599-5.389 44.039-9.689 10.816-1.059 21.262-1.533 31.817-1.533 18.246 0 36.161 1.416 53.642 4.144 69.441 4.088 148.797 45.322 204.691 107.946 55.785 58.363 89.947 137.21 89.947 224.035 0 13.662-0.846 27.126-2.488 40.343-0.163-0.309-0.348 1.151-0.348 2.653 0 6.791 3.784 12.699 9.359 15.729 68.861 34.597 134.23 117.504 155.763 216.754-1.424-7.797 3.362 11.618 5.916 31.73 1.696 13.937 2.586 28.537 2.586 43.344s-0.889 29.407-2.618 43.748c-15.395 134.38-118.284 249.368-253.362 283.546-10.044 3.904-33.128 8.976-57.16 10.586zM633.468 814.257h146.185c12.397-1.14 22.314-11.010 23.532-23.433l0.009-195.727c0.974-12.508 10.94-22.506 23.448-23.534l97.549-0.006c14.36 0 48.493 0 0-48.728l-195.149-194.913c-6.226-6.256-14.843-10.128-24.364-10.128s-18.139 3.872-24.363 10.127l-195.15 194.914c-49.199 49.199-11.535 48.728 0 48.728h97.457c13.001 0 23.54 10.539 23.54 23.54v194.913c0.741 13.575 11.929 24.302 25.623 24.302 0.592 0 1.18-0.020 1.763-0.060z"
579
- ],
580
- "attrs": [],
581
- "isMulticolor": false,
582
- "width": 1365,
583
- "grid": 0,
584
- "tags": [
585
- "upload"
586
- ],
587
- "colorPermutations": {}
588
- },
589
- {
590
- "id": 67,
591
- "paths": [
592
- "M1133.686 927.114l-507.668-894.818c-10.931-19.443-31.427-32.362-54.942-32.362s-44.011 12.919-54.779 32.047l-507.831 895.133c-5.349 9.287-8.504 20.423-8.504 32.295s3.155 23.008 8.673 32.615c10.799 19.015 31.273 31.902 54.762 31.976l1015.346 0c23.439-0.050 43.924-12.919 54.778-31.984 5.512-9.599 8.667-20.734 8.667-32.607s-3.155-23.008-8.673-32.615zM571.077 899.545c-47.431-2.299-85.016-41.314-85.016-89.108s37.585-86.808 84.811-89.1c47.636 2.291 85.221 41.306 85.221 89.1s-37.585 86.808-84.811 89.1zM640.985 606.523c-1.182 27.372-31.311 48.443-71.089 48.443s-67.545-21.071-68.726-48.443c-6.105-98.462-19.692-275.692-19.692-294.006 0-36.037 39.385-64.197 90.388-64.197s86.843 28.16 86.843 64.197c0.591 17.526-11.422 196.135-17.526 293.809z"
593
- ],
594
- "attrs": [],
595
- "isMulticolor": false,
596
- "width": 1142,
597
- "grid": 0,
598
- "tags": [
599
- "error",
600
- "warning"
601
- ],
602
- "colorPermutations": {}
603
- },
604
- {
605
- "id": 63,
606
- "paths": [
607
- "M382.025 694.59h-238.592c-1.362 0.048-2.963 0.075-4.569 0.075-76.722 0-138.918-62.196-138.918-138.918 0-1.37 0.020-2.735 0.059-4.095q-0.005-206.441-0.005-412.734c0-76.722 62.196-138.918 138.918-138.918 161.666 0 324.026 0 486.213 0 0.971-0.025 2.113-0.040 3.26-0.040 56.17 0 104.23 34.726 123.881 83.881 14.209 31.287-1.593 54.73-34.412 54.73h-503.578c-1.857-0.176-4.014-0.277-6.195-0.277-38.361 0-69.459 31.098-69.459 69.459 0 2.237 0.106 4.45 0.313 6.633q-0.021 131.52-0.021 263.318c0 50.705 27.784 77.968 78.662 77.968h501.321c1.458-0.217 3.141-0.341 4.852-0.341 19.181 0 34.73 15.549 34.73 34.73 0 6.532-1.803 12.643-4.94 17.862-21.008 51.071-70.552 86.546-128.396 86.667l-243.122 0z",
608
- "M451.484 746.685h208.377v121.553c25.7 0 15.802 0 40.634 0 2.535-0.441 5.797-2.794 7.78-6.017 12.82-17.355 33.139-28.447 56.049-28.447 38.361 0 69.459 31.098 69.459 69.459 0 2.169-0.099 4.314-0.294 6.432-2.734 30.281-26.005 55.449-56.157 61.132-4.598 1.004-9.383 1.54-14.293 1.54-22.154 0-41.758-10.918-53.726-27.666-2.948-4.367-7.652-7.070-12.987-7.070-0.611 0-1.215 0.036-1.807 0.105-22.676-0.007-10.694-0.007-33.268-0.007 0 29.867-28.826 86.824-105.578 86.824-1.14 0.046-2.478 0.072-3.822 0.072-50.887 0-93.019-37.48-100.298-86.34-24.726-0.555-14.828-0.555-39.833-0.555-2.535 0.441-5.797 2.794-7.78 6.017-12.746 18.188-33.546 29.892-57.081 29.892-38.361 0-69.459-31.098-69.459-69.459 0-2.741 0.159-5.444 0.468-8.102 2.724-30.229 25.995-55.398 56.147-61.080 4.598-1.004 9.383-1.54 14.293-1.54 22.154 0 41.758 10.918 53.726 27.666 2.935 4.459 7.69 7.232 13.094 7.232 0.574 0 1.14-0.031 1.698-0.092 22.679 0.006 10.697 0.006 34.661 0.006v-121.553z",
609
- "M664.376 358.93l-217.58-80.746v-80.92l217.58 80.92v80.746z",
610
- "M664.376 220.185l-217.58-80.92h217.58v80.92z",
611
- "M664.376 497.674l-217.58-80.746v-80.746l217.58 80.746v80.746z",
612
- "M446.795 555.672v-80.746l217.58 80.746h-217.58z"
613
- ],
614
- "attrs": [],
615
- "isMulticolor": false,
616
- "width": 833,
617
- "grid": 0,
618
- "tags": [
619
- "gzip",
620
- "archive"
621
- ],
622
- "colorPermutations": {}
623
- },
624
- {
625
- "id": 19,
626
- "paths": [
627
- "M1004 670v-670l-108 84v586c0 34-24 62-54 62-32 0-56-28-56-62v-312c0-100-74-182-164-182s-162 82-162 182v312c0 34-26 62-56 62s-54-28-54-62v-312c0-100-74-182-164-182s-164 82-164 182v0 670l108-84v-586c0-34 26-62 56-62s56 28 56 62l-2 312c0 100 74 182 164 182s164-82 164-182v0-312c0-34 24-62 54-62 32 0 56 28 56 62v312c0 100 72 182 164 182 90 0 162-82 162-182z"
628
- ],
629
- "attrs": [],
630
- "isMulticolor": false,
631
- "tags": [
632
- "wpmudev-logo"
633
- ],
634
- "defaultCode": 99,
635
- "grid": 0,
636
- "colorPermutations": {}
637
- },
638
- {
639
- "id": 20,
640
- "paths": [
641
- "M514 0c-284 0-514 230-514 514s230 514 514 514c284 0 514-230 514-514s-230-514-514-514zM514 950c-242 0-436-196-436-436 0-242 194-436 436-436 240 0 436 194 436 436 0 240-196 436-436 436zM774 228l-60 48v322c0 20-14 34-30 34-18 0-32-14-32-34v-172c0-56-40-100-90-100s-90 44-90 100v172c0 20-14 34-30 34s-30-14-30-34v-172c0-56-40-100-90-100s-90 44-90 100v0 370l58-46v-324c0-18 14-34 32-34 16 0 30 16 30 34v172c0 56 40 102 90 102s90-46 90-102v0-172c0-18 14-34 30-34 18 0 32 16 32 34v172c0 56 40 102 90 102s90-46 90-102v0-370z"
642
- ],
643
- "attrs": [],
644
- "isMulticolor": false,
645
- "tags": [
646
- "wpmudev-logo"
647
- ],
648
- "defaultCode": 100,
649
- "grid": 0,
650
- "colorPermutations": {}
651
- },
652
- {
653
- "id": 48,
654
- "paths": [
655
- "M510.72 1024c-282.192-0.764-510.657-229.701-510.657-511.998 0-282.77 229.23-512 512-512s512 229.23 512 512c0 2.828-0.023 5.651-0.069 8.469-3.807 278.716-230.984 503.536-510.67 503.536-0.916 0-1.831-0.002-2.746-0.007zM801.829 186.331c-192-178.103-514.011-136.594-652.069 83.383 1.457 0.351 5.118 0.794 8.862 0.912l128.098-4.569c1.526-0.428 3.279-0.673 5.089-0.673 9.947 0 18.161 7.423 19.403 17.033 0.021 0.347 0.027 0.638 0.027 0.931 0 11.21-9.087 20.297-20.297 20.297-0.714 0-1.42-0.037-2.116-0.109-13.81 1.653-27.89 2.75-43.616 4.213l157.074 469.76c2.56-6.766 4.023-10.606 5.303-14.629 28.343-85.029 56.686-170.24 85.211-256 1.679-4.231 2.652-9.133 2.652-14.263s-0.973-10.032-2.745-14.532c-18.192-48.005-36.478-96.097-52.752-144.919-6.583-19.749-14.811-31.451-36.571-28.526-0.546 0.016-1.189 0.025-1.834 0.025-5.843 0-11.513-0.743-16.92-2.139-8.938-0.769-16.246-8.623-16.246-18.183 0-10.14 8.22-18.36 18.36-18.36 0.579 0 1.153 0.027 1.718 0.079 14.007-0.005 28.27 1.457 42.35 2.555 22.64 1.451 49.092 2.278 75.736 2.278 38.096 0 75.797-1.69 113.032-5-3.065-0.267-1.049-0.621 1.050-0.621 9.86 0 17.897 7.804 18.272 17.572 0.040 0.495 0.062 1.031 0.062 1.572 0 10.705-8.678 19.383-19.383 19.383-0.601 0-1.195-0.027-1.782-0.081-14.37 1.651-28.816 2.931-44.542 4.577l156.16 464.457c-2.265 4.5 0.24 0.213 1.921-4.467 22.399-75.076 45.439-149.864 66.833-224.836 5.267-17.232 8.3-37.039 8.3-57.555 0-37.519-10.143-72.669-27.837-102.857-7.891-14.4-17.765-28.845-25.994-44.571 3.982 11.641-12.885-20.218-22.608-55.057-1.764-7.159-2.529-13.298-2.529-19.616 0-39.446 29.81-71.93 68.131-76.153-2.341 0.849 2.341-0.302 6.655-2.147zM655.726 923.977l-134.766-367.177h-2.926l-128.914 374.674c36.697 11.121 78.871 17.524 122.541 17.524 51.481 0 100.884-8.898 146.754-25.239zM318.72 903.314l-206.629-566.857c-23.247 51.636-36.791 111.934-36.791 175.395 0 170.748 98.044 318.596 240.906 390.319zM899.291 310.857c0 6.217 0 9.143 0 12.069 0.474 7.029 0.745 15.236 0.745 23.506 0 43.384-7.439 85.030-21.111 123.733q-54.057 156.852-108.914 316.12l-34.743 100.571c197.303-111.726 272.823-371.383 164.571-575.817z"
656
- ],
657
- "attrs": [],
658
- "isMulticolor": false,
659
- "grid": 0,
660
- "tags": [
661
- "wordpress"
662
- ],
663
- "colorPermutations": {}
664
- },
665
- {
666
- "id": 66,
667
- "paths": [
668
- "M109.909 1024v-512h-109.909v-176.469h109.739v-105.984c0.171-144.213 62.123-229.547 238.251-229.547h146.603v176.469h-91.648c-68.267 0-73.216 24.747-73.216 70.656v88.235h166.059l-19.627 176.64h-146.603v512h-219.648z"
669
- ],
670
- "attrs": [],
671
- "isMulticolor": false,
672
- "width": 495,
673
- "grid": 0,
674
- "tags": [
675
- "facebook"
676
- ],
677
- "colorPermutations": {}
678
- },
679
- {
680
- "id": 51,
681
- "paths": [
682
- "M1310.792 121.135c-14.89 10.709-81.418 32.19-151.988 40.433 39.699-16.967 91.224-72.488 115.047-140.977-5.215 8.61-82.434 44.54-166.562 61.314-53.177-49.795-122.171-81.005-198.455-81.005-0.51 0-1.019 0.001-1.529 0.004-1.417-0.031-3.181-0.048-4.948-0.048-143.894 0-260.897 115.137-263.907 258.31-0.005 0.394-0.005 0.528-0.005 0.663 0 20.801 2.555 41.005 7.367 60.315-213.432-6.91-416.518-110.697-554.535-271.859-23.725 35.825-37.265 80.55-37.265 128.437 0 0.162 0 0.324 0 0.486 0.318 89.914 47.503 169.25 118.519 214.509-40.056 0.282-83.88-11.67-122.242-32.426s1.463 2.758 1.463 3.888c1.807 126.237 93.452 231.003 213.999 253.1-19.642 6.049-44.035 9.384-69.208 9.384-17.872 0-35.351-1.681-52.289-4.894 39.032 104.987 137.304 178.977 252.959 179.717-91.27 69.137-206.805 110.743-332.057 110.743-0.661 0-1.321-0.001-1.981-0.003-21.669-0.002-43.945-1.315-65.843-3.869 119.49 73.177 261.363 116.418 413.335 116.418 0.546 0 1.091-0.001 1.636-0.002 494.626 0 765.147-393.916 765.147-735.4q0-16.724 0-33.448c-10.131 19.157 72.941-47.501 132.196-132.070z"
683
- ],
684
- "attrs": [],
685
- "isMulticolor": false,
686
- "width": 1311,
687
- "grid": 0,
688
- "tags": [
689
- "twitter"
690
- ],
691
- "colorPermutations": {}
692
- },
693
- {
694
- "id": 64,
695
- "paths": [
696
- "M692.495 744.47c63.126-15.876 116.235-46.872 145.341-107.73 18.195-36.716 28.841-79.951 28.841-125.673 0-26.693-3.629-52.539-10.419-77.070 1.36-8.143-14.763-42.914-38.675-70.812-2.053-2.82-3.417-6.692-3.417-10.883 0-1.408 0.154-2.78 0.446-4.1 4.58-15.767 7.227-34.023 7.227-52.897 0-24.881-4.601-48.687-12.998-70.614-0.751-4.264-5.676-8.414-11.569-8.414-0.625 0-1.24 0.047-1.84 0.137-22.795 0.222-48.918 7.221-71.926 19.338-17.97 8.815-36.87 20.344-55.77 30.361-3.497 1.961-7.675 3.117-12.123 3.117-1.324 0-2.625-0.102-3.894-0.3-37.228-9.592-80.127-15.108-124.315-15.108s-87.087 5.516-128.047 15.898c2.499-0.603 1.24-0.507-0.042-0.507-4.959 0-9.583-1.436-13.479-3.916-6.299-9.525-54.471-35.184-107.814-47.174l-8.319-1.338c-18.9-2.079-20.412-1.701-26.46 17.577-6.368 18.236-10.046 39.259-10.046 61.14 0 19.234 2.842 37.804 8.129 55.314-0.014-0.17 0.18 1.189 0.18 2.593 0 3.031-0.903 5.852-2.455 8.206-47.593 55.132-56.665 119.959-46.081 188.944-2.207 0.821 5.952 38.105 19.692 72.558 26.046 66.924 81.045 103.59 150.408 121.545 21.357 5.481 43.281 8.883 66.339 13.608-12.638 11.215-26.514 36.191-31.088 64.29-1.070 3.438-4.041 6.294-7.755 7.504-56.791 21.761-111.412 12.122-145.999-45.145-10.683-23.925-37.497-46.215-69.98-53.542-4.020-0.649-7.843-0.943-11.734-0.943-5.736 0-11.323 0.639-16.694 1.849-7.811 1.416-9.134 7.842-3.842 14.079-2.725-1.877 4.644 6.466 13.756 12.335 19.054 7.885 45.767 36.705 59.057 72.092 17.056 43.824 58.023 73.933 106.097 74.521 4.852 0.123 10.481 0.193 16.125 0.193 20.964 0 41.704-0.962 62.177-2.844-2.629 32.514-2.629 66.534-2.629 100.365 0 17.199-18.9 25.137-39.123 18.9 7.828 9.482-65.118-19.649-127.215-63.198-158.175-112.005-238.689-266.229-230.562-461.276 11.099-242.804 190.67-443.514 425.429-487.122 34.55-7.142 70.546-10.946 107.43-10.946 289.868 0 524.852 234.984 524.852 524.852 0 229.409-147.183 424.441-352.272 495.818-29.388 9.621-44.886-1.152-44.886-27.99q0-65.961 0-132.3c0.271-3.25 0.426-7.035 0.426-10.856 0-35.003-12.981-66.973-34.392-91.36 23.382-4.379 44.928-7.781 65.907-13.073z"
697
- ],
698
- "attrs": [],
699
- "isMulticolor": false,
700
- "width": 1058,
701
- "grid": 0,
702
- "tags": [
703
- "github"
704
- ],
705
- "colorPermutations": {}
706
- },
707
- {
708
- "id": 54,
709
- "paths": [
710
- "M750.421 379.904l-232.448-328.704 69.973-51.2c6.315 7.68 12.629 14.336 17.067 21.675 64.171 95.573 127.488 191.488 192.341 286.379 12.288 17.92 14.165 29.696-6.315 41.643 76.886-48.048 12.89-14.204-41.447 30.876zM734.72 397.824l-52.736 59.221-304.299-277.163 60.075-64.171zM270.677 345.088l34.133-63.317c9.899-17.067 21.333-6.656 31.403-0.853q140.459 80.555 280.576 161.621c59.051 34.133 59.904 41.813 11.776 97.792zM620.203 570.197c-2.56 10.581-3.072 13.312-3.925 16.213-17.067 60.587-5.461 54.784-64.683 38.059-106.667-30.208-213.333-61.269-320.341-90.112-25.088-6.827-29.525-17.067-20.992-40.448 25.429-70.656 11.947-59.221 74.923-39.765 103.253 31.744 205.995 65.365 308.736 99.157-5.62-4.303 11.983 4.578 26.432 17.021zM595.285 691.712c-1.877 49.323-2.731 51.2-48.469 46.421-117.077-11.264-233.984-23.381-351.061-34.133-21.333-2.048-27.136-9.899-23.211-31.915 10.923-63.659 9.728-62.635 75.264-53.589q158.891 22.016 318.293 40.277c25.259 2.56 35.328 11.435 29.355 32.939zM378.027 765.781c59.904 0 119.467 0 179.712 0 22.869 0 33.109 5.291 32.256 30.549-2.389 72.704 9.899 63.317-62.805 63.659-108.203 0-216.405 0-324.267 0-27.136 0.512-38.229-6.656-38.229-35.157 1.877-70.827-2.731-58.027 59.221-58.88 51.712-0.683 102.912-0.171 154.112-0.171zM91.136 930.475h576.512v-38.741c0-87.040 0-173.909 0-260.949 0-23.040 6.997-30.208 29.696-29.525 73.387 2.219 60.587-8.875 61.099 61.44 0 110.080 0 220.331 0 330.411 0 24.576-8.021 30.891-31.573 30.72q-347.819-1.024-695.808 0c-24.064 0-31.403-7.168-31.232-31.232 1.024-119.467 1.195-238.933 0-359.424 0-26.283 8.533-32.597 33.28-32.256 57.856 1.195 57.856 0 57.856 59.051v270.507z"
711
- ],
712
- "attrs": [],
713
- "isMulticolor": false,
714
- "width": 807,
715
- "grid": 0,
716
- "tags": [
717
- "stackoverflow"
718
- ],
719
- "colorPermutations": {}
720
- },
721
- {
722
- "id": 61,
723
- "paths": [
724
- "M378.839 1024h234.818v-380.6c-0.115-2.18-0.181-4.732-0.181-7.299 0-17.148 2.933-33.61 8.325-48.913 18.477-47.756 64.975-81.744 119.411-81.744 0.217 0 0.434 0.001 0.65 0.002 85.088-0 118.941 62.422 118.941 154.001v364.554h235.013v-391.363c0-209.379-115.843-306.633-270.431-306.633-3.397-0.176-7.375-0.276-11.377-0.276-85.454 0-160.246 45.646-201.324 113.886l0.974 1.058v-97.841h-234.818c3.131 63.596 0 681.166 0 681.166zM131.302 263.387c1.841 0.096 3.997 0.15 6.166 0.15 70.031 0 126.801-56.771 126.801-126.801 0-1.773-0.036-3.538-0.108-5.293-1.362-74.499-50.869-131.442-131.294-131.442-1.841-0.096-3.997-0.15-6.166-0.15-70.031 0-126.801 56.771-126.801 126.801 0 1.773 0.036 3.538 0.108 5.293-0.091 1.46-0.139 3.466-0.139 5.482 0 69.598 56.421 126.019 126.019 126.019 1.353 0 2.702-0.021 4.045-0.064l1.369 0.005zM248.711 1024v-681.166h-234.818v681.166h234.818z"
725
- ],
726
- "attrs": [],
727
- "isMulticolor": false,
728
- "width": 1096,
729
- "grid": 0,
730
- "tags": [
731
- "linkedin"
732
- ],
733
- "colorPermutations": {}
734
- },
735
- {
736
- "id": 60,
737
- "paths": [
738
- "M0 150.68v-151.349h484.806v1.783l17.832 65.087 109.667 407.906q15.603 58.177 31.206 116.354c0 2.452 2.006 3.566 4.235 2.675 0.899-0.591 1.747-1.849 2.001-3.312l111.454-414.179 48.146-176.313h483.469v151.572h-4.235c-14.934 0-29.646 0-44.58 0-4.902 0.022-10.177 1.17-14.975 3.221-4.709 0.532-16.911 9.762-25.001 21.956-5.298 7.041-8.399 15.65-8.399 24.983 0 0.233 0.002 0.465 0.006 0.697q-0 313.139-0 626.535c-0.011 0.319-0.017 0.695-0.017 1.071 0 8.082 2.868 15.495 7.641 21.275-7.498-8.847 0.66 2.521 10.991 11.442 8.277 7.432 19.135 11.92 31.042 11.92 0.409 0 0.817-0.005 1.224-0.016 13.983 0.001 28.025 0.001 41.845 0.001h4.458v3.566q0 73.111 0 146.445h-462.739c-0.034-0.533-0.053-1.156-0.053-1.783s0.019-1.25 0.057-1.868q-0.004-71.912-0.004-143.685c0-1.114 0-2.229 0-3.789h96.515v-668.698c-3.566-1.337-4.904 0-5.795 3.343q-29.2 103.871-57.285 207.296l-161.379 583.997c-2.229 8.47-4.458 16.717-6.687 25.188h-175.199s0-2.229-1.114-3.343l-60.852-222.899-160.488-588.677c-1.337-4.904-1.337-4.904-6.687-4.012v668.698h96.738v4.458q0 73.111 0 146.445h-387.845v-152.017h49.707c0.97 0.123 2.093 0.193 3.232 0.193s2.262-0.070 3.364-0.206c11.449-1.849 25.89-12 34.716-26.038 3.75-4.782 6.060-10.819 6.165-17.391q0-316.541 0-633.281c-0.021-3.62-0.924-7.669-2.528-11.342 0.243-2.833-7.367-14.032-17.619-21.991-8.527-7.722-19.721-12.387-32.005-12.387-0.551 0-1.099 0.009-1.645 0.028-14.409-0.002-28.675-0.002-43.163-0.002z"
739
- ],
740
- "attrs": [],
741
- "isMulticolor": false,
742
- "width": 1293,
743
- "grid": 0,
744
- "tags": [
745
- "medium"
746
- ],
747
- "colorPermutations": {}
748
- },
749
- {
750
- "id": 57,
751
- "paths": [
752
- "M695.79 853.981c3.596 15.101 23.817 39.586 50.242 54.246-40.601-22.728 2.827 5.557 50.912 24.625 9.205 2.488 13.998 8.286 13.998 15.204 0 0.382-0.015 0.761-0.043 1.136 0.003 17.605 0.003 35.261 0.003 52.916 0.257 1.013 0.404 2.177 0.404 3.375 0 7.898-6.403 14.301-14.301 14.301-0.266 0-0.531-0.007-0.794-0.022-59.108 9.182-115.605 5.828-166.805-29.129-7.085 0.7-40.335-30.641-61.431-69.534-3.148-6.217-8.387-9.67-14.433-9.67-1.336 0-2.632 0.169-3.869 0.486 2.529 0.954-45.655 7.205-94.816 9.766-3.969 0.12-5.873 0.132-7.78 0.132-94.629 0-182.061-30.815-252.809-82.957-85.845-51.128-164.078-162.048-186.131-292.088-5.712-28.702-8.77-58.662-8.77-89.337 0-116.169 43.862-222.094 115.928-302.117 45.578-64.244 143.675-127.546 256.753-147.171 27.893-5.565 56.97-8.538 86.741-8.538 104.131 0 199.769 36.366 274.906 97.090 75.283 48.643 146.935 154.036 168.449 276.688 5.832 29.094 8.949 59.458 8.949 90.549 0 103.708-34.672 199.318-93.057 275.871 16.652-8.453-41.705 60.467-114.896 108.714l-7.526 5.466zM629.407 714.505c1.236-1.766 4.237-5.473 7.062-9.534 33.173-48.522 52.973-108.474 52.973-173.049 0-0.735-0.003-1.469-0.008-2.203 0.319-11.927 0.501-26.1 0.501-40.317 0-51.28-2.361-102.009-6.982-152.083-3.832-61.431-43.719-131.186-103.212-176.534-33.71-26.441-75.921-42.117-121.793-42.117-51.63 0-98.622 19.858-133.754 52.353-59.034 54.74-96.017 132.976-96.090 219.851-1.412 44.858-0 89.878-0 134.722-0.011 0.992-0.017 2.164-0.017 3.337 0 42.177 8.042 82.475 22.677 119.446 31.895 82.723 109.754 169.41 226.985 158.817 10.417-0.883 20.657-3.708 33.368-6.003-26.659-40.96-57.732-69.385-103.283-79.095-4.557-1.173-8.784-5.253-10.387-10.481-0.912-24.477-0.030-49.017-0.030-73.382-0.027-0.266-0.043-0.574-0.043-0.886 0-5.070 4.11-9.181 9.181-9.181 0.64 0 1.265 0.065 1.868 0.19 4.087-0.251 8.936-0.389 13.818-0.389 42.722 0 82.986 10.523 118.342 29.118 29.503 15.928 57.751 37.291 89.001 57.771z"
753
- ],
754
- "attrs": [],
755
- "isMulticolor": false,
756
- "width": 911,
757
- "grid": 0,
758
- "tags": [
759
- "quora"
760
- ],
761
- "colorPermutations": {}
762
- },
763
- {
764
- "id": 73,
765
- "paths": [
766
- "M640 635.68h-151.52v-87.84h126.24c8.837 0 16-7.163 16-16v-66.080c0-8.837-7.163-16-16-16h-126.24v-73.6h150.72c8.837 0 16-7.163 16-16v-66.080c0-8.837-7.163-16-16-16h-249.6c-8.837 0-16 7.163-16 16v423.68c0 8.837 7.163 16 16 16h250.4c8.837 0 16-7.163 16-16v-66.080c0-8.837-7.163-16-16-16v0z",
767
- "M295.040 510.88c-27.243-25.69-60.119-44.648-96-55.36-12.16-5.28-22.24-10.24-30.56-14.88-6.525-3.489-12.689-7.616-18.4-12.32-3.204-2.715-5.771-6.102-7.52-9.92-1.675-3.943-2.493-8.197-2.4-12.48-0.196-5.436 0.618-10.861 2.4-16 1.559-4.269 3.952-8.185 7.040-11.52 2.931-2.939 6.485-5.181 10.4-6.56 5.121-1.88 10.545-2.802 16-2.72 5.868-0.144 11.7 0.947 17.12 3.2 4.517 1.996 8.474 5.073 11.52 8.96 3.693 4.755 6.412 10.192 8 16 2.034 7.016 3.004 14.297 2.88 21.6 0 8.837 7.163 16 16 16h80c6.879 0.018 12.999-4.363 15.2-10.88v-1.76c0.51-1.55 0.78-3.169 0.8-4.8v-4c0.199-18.749-3.337-37.351-10.4-54.72-6.484-17.080-16.394-32.653-29.12-45.76-14.215-13.736-31.172-24.314-49.76-31.040-19.396-6.945-39.88-10.359-60.48-10.080-20.14-0.235-40.186 2.791-59.36 8.96-17.943 5.928-34.569 15.273-48.96 27.52-14.061 11.771-25.321 26.529-32.96 43.2-7.485 16.923-11.25 35.256-11.040 53.76-0.308 17.979 2.842 35.85 9.28 52.64 6.347 15.934 16.381 30.136 29.28 41.44 30.757 24.553 65.881 43.065 103.52 54.56 14.493 5.372 27.766 13.586 39.040 24.16 2.89 3.307 5.069 7.174 6.4 11.36 1.694 5.545 2.504 11.323 2.4 17.12 0.050 5.427-0.76 10.827-2.4 16-1.304 3.972-3.43 7.625-6.24 10.72l11.84 10.72-11.68-10.080c-2.624 2.855-5.926 5.001-9.6 6.24-5.624 1.846-11.523 2.712-17.44 2.56-8.13 0.199-16.237-0.936-24-3.36-5.492-1.716-10.487-4.736-14.56-8.8-4.135-4.554-7.1-10.045-8.64-16-2.43-9.347-3.561-18.984-3.36-28.64 0-8.837-7.163-16-16-16h-81.28c-6.879-0.018-12.999 4.363-15.2 10.88v1.76c-0.494 1.499-0.764 3.062-0.8 4.64v4.48c-0.349 21.369 3.794 42.573 12.16 62.24 8.179 18.8 20.875 35.288 36.96 48 32.617 25.906 73.234 39.653 114.88 38.88 20.378-0.054 40.622-3.293 60-9.6 17.592-5.53 33.909-14.504 48-26.4 13.909-11.625 24.873-26.373 32-43.040 7.182-17.558 10.72-36.393 10.4-55.36 0.036-17.877-2.994-35.628-8.96-52.48-5.571-16.093-14.579-30.78-26.4-43.040v0z",
768
- "M996.96 375.36c-7.145-20.974-18.775-40.138-34.080-56.16-14.863-15.548-32.935-27.669-52.96-35.52-42.728-15.595-89.592-15.595-132.32 0-19.961 7.869-37.937 20.053-52.64 35.68-15.124 16.074-26.587 35.233-33.6 56.16-7.557 23.019-11.234 47.135-10.88 71.36v118.72c-0.368 24.279 3.309 48.449 10.88 71.52 7.046 20.853 18.568 39.912 33.76 55.84 14.748 15.457 32.721 27.475 52.64 35.2 42.865 15.442 89.775 15.442 132.64 0 19.957-7.741 37.978-19.756 52.8-35.2 15.254-15.909 26.832-34.97 33.92-55.84 7.595-23.065 11.272-47.24 10.88-71.52v-118.72c0.371-24.291-3.361-48.471-11.040-71.52v0zM794.4 445.92c-0.139-12.101 1.096-24.178 3.68-36 1.741-8.286 5.054-16.162 9.76-23.2 3.551-5.173 8.409-9.314 14.080-12 13.895-5.682 29.465-5.682 43.36 0 5.828 2.793 10.841 7.035 14.56 12.32 4.796 6.91 8.218 14.678 10.080 22.88 2.661 11.864 3.896 24.003 3.68 36.16v119.68c0.189 12.156-1.046 24.292-3.68 36.16-1.735 8.364-5.106 16.303-9.92 23.36-3.719 5.285-8.732 9.527-14.56 12.32-13.738 5.637-29.142 5.637-42.88 0-5.778-2.728-10.742-6.92-14.4-12.16-4.815-7.115-8.185-15.106-9.92-23.52-2.646-12.029-3.881-24.325-3.68-36.64v-119.36h-0.16z"
769
- ],
770
- "attrs": [],
771
- "isMulticolor": false,
772
- "grid": 0,
773
- "tags": [
774
- "seo"
775
- ]
776
- },
777
- {
778
- "id": 59,
779
- "paths": [
780
- "M244.524 887.172c3.553-5.798-0.865 3.084-6.972 10.526-35.223 35.201-68.945 69.452-103.726 103.703-14.1 13.997-33.525 22.647-54.969 22.647-11.348 0-22.131-2.422-31.859-6.778-27.618-12.237-46.878-39.882-46.878-72.026 0-22.325 9.291-42.48 24.217-56.81l101.544-101.366c-16.571 15.614-4.263 2.16 10.381-8.213-4.202-5.204-7.027-8.559-10.205-11.56l-89.335-89.512c-0.261 0.319-3.339-2.282-5.427-5.573-2.997-5.565-4.731-12.087-4.731-19.013 0-0.978 0.035-1.948 0.103-2.909 4.057-4.921 10.436-8.32 17.615-8.521 43.288-0.001 86.543-0.001 129.798-0.001h179.023c1.53-0.095 3.319-0.149 5.12-0.149s3.59 0.054 5.364 0.16c-0.168-0.013-0.077-0.014 0.013-0.014 9.751 0 17.655 7.904 17.655 17.655 0 1.061-0.094 2.1-0.273 3.11 0.016 29.907 0.016 59.921 0.016 89.758q0 112.11 0 224.221c0.66 1.778 1.041 3.831 1.041 5.974 0 7.121-4.216 13.258-10.289 16.050-2.023 0.657-4.224 1.009-6.508 1.009-7.33 0-13.812-3.632-17.744-9.194q-45.949-45.971-91.499-92.051c3.89 5.539-2.709-2.264-7.247-11.283z",
781
- "M886.113 774.003c5.826 6.179 8.121 9.004 10.77 11.652 35.31 35.31 69.385 69.032 103.636 104.166 14.141 14.205 22.884 33.795 22.884 55.426 0 36.978-25.546 67.989-59.952 76.347-6.248 1.654-12.806 2.541-19.57 2.541-21.704 0-41.275-9.129-55.085-23.756l-104.023-103.849-7.945-7.768-9.357 8.828-89.159 89.335c0.312 0.541-3.553 4.67-8.341 7.347-4.333 2.131-9.274 3.337-14.497 3.337-1.911 0-3.784-0.161-5.606-0.471-4.663-3.855-7.749-9.78-7.749-16.426 0-0.050 0-0.1 0.001-0.15-0-73.261-0-146.53-0-219.799 0-32.662 0-65.324 0-97.986-0.459-1.497-0.723-3.218-0.723-5.001 0-9.751 7.904-17.655 17.655-17.655 1.833 0 3.6 0.279 5.262 0.797l317.668-0.034c0.522-0.060 1.127-0.093 1.74-0.093 8.971 0 16.243 7.272 16.243 16.243 0 4.019-1.46 7.697-3.878 10.533 4.384-5.383-1.42 3.319-8.937 10.174q-44.716 44.711-89.56 89.202c3.812-2.402-3.136 3.205-11.14 6.922z",
782
- "M245.76 136.828l89.688-90.041c-6.447 6.153 4.178-6.713 17.378-16.229 5.098-3.007 10.891-4.67 17.072-4.67 1.423 0 2.826 0.088 4.203 0.259 8.486 1.396 8.31 10.4 8.31 17.638q0 157.837 0 315.498c0 18.538-4.943 23.128-24.011 23.128-104.342 0-208.861 0-313.203 0-6.749-0.104-13.125-3.133-17.643-7.932-1.432-2.499-2.269-5.477-2.269-8.651 0-5.661 2.665-10.7 6.808-13.931 15.399-15.743 31.112-31.279 46.649-46.816l57.026-57.909-9.181-9.71c-35.31-35.31-69.385-69.032-103.636-104.166-14.223-13.509-23.071-32.559-23.071-53.676 0-8.596 1.466-16.85 4.162-24.525 6.485-26.059 29.621-47.893 58.533-53.086 5.633-1.325 11.579-2.046 17.693-2.046 21.959 0 41.746 9.302 55.635 24.18l102.264 102.444c-11.027-12.493-0.547-2.233 7.359 9.861z",
783
- "M775.062 137.534c39.901-40.077 76.623-77.33 114.052-114.052 14.357-14.968 34.522-24.269 56.859-24.269 43.488 0 78.742 35.254 78.742 78.742 0 22.645-9.559 43.057-24.861 57.421-33.94 34.29-68.191 68.188-102.266 102.263-2.825 2.825-5.65 6.003-9.534 10.24l62.323 61.263c13.418 13.418 27.189 26.483 40.077 40.43 3.281 2.891 7.111 9.74 8.444 17.445 1.443 10.097-5.443 15.394-17.625 15.57h-312.32c-23.658 0-27.719-4.061-27.719-27.895q0-154.306 0-308.789c-0.413-1.424-0.651-3.059-0.651-4.749 0-6.691 3.722-12.513 9.21-15.508 2.175-0.813 4.58-1.256 7.088-1.256 6.687 0 12.638 3.151 16.45 8.049q45.938 45.421 91.312 91.147c-15.147-17.038-0.765-3.060 10.102 13.439z"
784
- ],
785
- "attrs": [],
786
- "isMulticolor": false,
787
- "grid": 0,
788
- "tags": [
789
- "minify"
790
- ],
791
- "colorPermutations": {}
792
- },
793
- {
794
- "id": 49,
795
- "paths": [
796
- "M57.234 569.417h217.051l164.571 418.011c8.581 21.457 29.195 36.339 53.284 36.339 28.233 0 51.692-20.443 56.381-47.334l119.455-695.199 89.966 250.149c8.129 22.356 29.192 38.034 53.918 38.034 0.009 0 0.018-0 0.026-0l264.593 0c31.711-0 57.417-25.707 57.417-57.417s-25.707-57.417-57.417-57.417h-223.817l-150.126-416.549c-8.447-21.735-29.2-36.861-53.486-36.861-27.832 0-51.024 19.866-56.17 46.191l-122.207 707.105-103.314-263.497c-8.551-21.544-29.217-36.526-53.389-36.571l-256.006-0c-31.711 0-57.417 25.707-57.417 57.417s25.707 57.417 57.417 57.417h0z"
797
- ],
798
- "attrs": [],
799
- "isMulticolor": false,
800
- "width": 1134,
801
- "grid": 0,
802
- "tags": [
803
- "uptime"
804
- ],
805
- "colorPermutations": {}
806
- },
807
- {
808
- "id": 47,
809
- "paths": [
810
- "M365.714 941.897c5.976 10.646 28.073 27.415 54.041 35.262 31.188 10.424 66.163 16.318 102.515 16.318 38.771 0 75.977-6.704 110.52-19.015-13.109 5.71 1.945 0.090 15.19-8.16-33.216-43.97-73.627-69.57-128.484-67.193s-103.131 25.783-153.783 42.789zM125.074 740.754c-3.508-4.984-5.606-11.179-5.606-17.865 0-9.726 4.44-18.414 11.404-24.149 7.002-8.637 15.414-15.952 21.631-24.912-4.73 9.278 15.3-15.941 28.060-45.071 11.803-37.763 8.328-48.369-17.82-67.203-1.097 0-2.011-1.829-3.109-2.56-14.538-5.499-40.503-33.064-54.492-66.844-3.657-7.945-7.497-14.527-10.423-21.659-15.909-34.194-29.989-68.206-21.577-108.434 8.298-9.68-1.302-0.041-8.378 11.33 20.448-38.773-2.988-0.547-18.783 41.421-10.326 34.045-15.799 70.328-15.799 107.889s5.474 73.844 15.667 108.095c-0.221 16.144 12.884 49.446 33.481 76.783 3.135 7.668 21.778 23.63 44.121 32.032zM454.217 98.743l1.28 2.194c8.042-10.711 0.704 0.748-8.764 10.044-18.299 15.19-36.584 30.184-54.87 45.361 59.907-40.798 9.274-11.484-33.074 26.82-1.783 2.523-3.062 6.094-3.062 9.964 0 1.683 0.242 3.309 0.693 4.846 2.261 3.854 6.823 6.973 12.148 7.552 0.898 0.057 1.861 0.085 2.832 0.085 6.38 0 12.471-1.238 18.045-3.486q91.104-35.176 180.521-71.382c2.854-1.477 5.345-4.779 6.024-8.702 0.122-0.926 0.186-1.91 0.186-2.909 0-12.725-10.315-23.040-23.040-23.040-1.615 0-3.192 0.166-4.713 0.482-0.754 0.189-1.792 0.313-2.859 0.313-6.948 0-12.673-5.237-13.443-11.979-2.099-5.094-3.315-10.939-3.315-17.068 0-0.45 0.007-0.898 0.020-1.345 0.23-0.933 0.363-2.080 0.363-3.259 0-7.25-5.023-13.327-11.779-14.94 8.614 5.016-0.37-1.021-10.353-5.127-9.261-4.806-26.68-9.694-45.095-10.962-78.148 2.53-171.621 39.469-246.413 98.904 37.597-34.161-25.949 13.059-74.639 72.857l13.606 28.078c4.925 1.539 10.588 2.426 16.458 2.426 9.768 0 18.962-2.455 27-6.781 6.459-3.32 14.452-5.354 22.919-5.354s16.46 2.034 23.515 5.639c-4.164-1.729 1.135 0.895 6.854 2.522 4.053 1.832 8.393 2.851 12.97 2.851 16.663 0 30.171-13.508 30.171-30.171 0-0.137-0.001-0.273-0.003-0.409 0.016 0.566 0.75-3.026 1.083-6.734 0.525-10.233 6.505-19.572 15.231-24.801-11.879 9.884-0.573-0.973 12.66-8.961q56.969-30.067 113.837-59.141c-6.309 2.273 3.829-2.272 14.694-4.98zM503.223 341.211c13.531-6.4 26.514-12.069 39.314-18.286 5.65-2.873 12.322-4.556 19.386-4.556 4.433 0 8.71 0.663 12.74 1.894-1.772-5.663 56.736 14.645 107.651 46.072-11.303-9.775 12.401 6.356 30.666 27.346 12.963 14.089 23.386 30.18 35.272 44.992-6.989-3.404 18.165 26.478 49.745 47.457 10.514 6.811 22.49 10.592 35.348 10.592 3.984 0 7.883-0.363 11.666-1.058 11.396-0.105 20.89-9.701 20.89-21.515 0-4.048-1.114-7.835-3.053-11.072-0.976-1.882-1.581-4.226-1.581-6.711 0-1.416 0.196-2.787 0.563-4.086 2.929-2.032 6.625-3.313 10.621-3.313 0.759 0 1.507 0.046 2.242 0.136 2.334 0.111 7.185 2.578 10.887 6.212 25.231 20.659 50.099 41.688 75.699 61.985 12.069 9.509 21.211 6.949 25.783-7.863 3.369-9.396 5.316-20.237 5.316-31.532 0-0.55-0.005-1.099-0.014-1.647-0.263-42.389-13.256-99.616-36.027-151.584 7.501 12.427-6.079-20.844-26.073-49.278 118.608 161.488 35.527 28.798-71.081-80.907 50.945 50.529 7.397 0.455-45.169-38.030-7.394-5.781-15.317-8.763-23.936-8.763-5.84 0-11.361 1.369-16.258 3.804-12.222 5.39-24.473 11.424-36.359 18.19-16.64 8.046-18.286 7.314-25.234-9.326-1.026-10.748-10.008-19.088-20.939-19.088-5.21 0-9.977 1.894-13.65 5.032-22.28 13.69-43.857 28.867-65.434 43.679-4.895 3.332-8.068 8.878-8.068 15.165 0 2.441 0.478 4.771 1.347 6.9q2.882 8.289 5.259 17.066c1.995 2.751 3.191 6.194 3.191 9.917 0 8.97-6.946 16.319-15.752 16.96-21.084 8.049-42.661 15.546-63.141 24.689 2.909-3.329-14.693 6.197-28.765 19.435-6.227 5.566-10.163 13.695-10.163 22.744 0 6.523 2.045 12.568 5.529 17.53zM593.554 397.166c-20.993-12.338-46.239-19.625-73.188-19.625-1.463 0-2.921 0.021-4.373 0.064-65.067 5.298-106.027 42.966-133.821 97.824-3.271 5.69-5.2 12.511-5.2 19.782 0 12.99 6.157 24.542 15.711 31.897-8.384-4.063 15.818 14.994 43.748 27.058-34.324-12.321 16.004 9.664 69.761 22.946 21.284 3.464 36.121 17.656 39.951 35.897-2.367-6.813 0.391 0.114 2.137 7.433 6.143 39.307 12.36 78.073 18.395 116.838-2.344-10.411 2.408 32.601 10.992 74.213 6.928 25.261 26.676 31.295 52.459 13.924-12.475 9.056 4.526-1.252 18.3-14.826-29.756 26.513 2.517 1.845 27.796-28.806 26.681-35.728 52.647-71.202 77.332-107.408 1.65-7.609 18.879-26.348 40.565-37.757 21.975-7.156 37.189-26.885 37.189-50.166 0-0.718-0.014-1.433-0.043-2.144-0.063-0.2-0.1-0.548-0.1-0.904s0.038-0.703 0.109-1.038c0.586-1.261 0.931-2.772 0.931-4.365 0-4.378-2.608-8.147-6.355-9.838 36.045 26.123 5.795 0.803-28.714-17.572-17.225-5.638-35.937-23.326-45.206-45.89 10.205 22.437 0.183-4.434-14.439-28.168 14.264 22.666 0.548-3.173-17.978-24.763-1.787-2.226-6.771-5.211-12.43-6.305-19.907-4.414-40.204-7.34-59.587-12.643 26.012 9.617-12.883-1.666-48.169-19.14-4.050-0.727-8.367-6.070-8.367-12.422 0-1.803 0.348-3.525 0.981-5.102zM539.977 1024h-55.954c2.685 0.476-3.199-1.009-9.304-1.788-65.31-1.008-144.474-24.437-212.994-64.186-120.342-57.945-225.505-193.667-253.256-355.816-4.080-22.553-5.909-42.484-8.469-62.233v-55.954c-0.579 3.095 0.961-2.979 1.785-9.279 1.727-81.753 33.964-174.177 87.408-250.693 62.601-105.24 193.094-195.584 345.686-217.516 18.059-2.695 33.601-4.341 49.144-6.17h55.954c-2.808-0.507 3.133 0.994 9.296 1.787 44.675 0.295 103.039 13.054 156.284 35.552 169.597 73.29 274.922 202.57 310.579 387.438 3.84 19.749 5.303 40.046 7.863 60.16v54.857c0.445-2.562-1.023 3.265-1.789 9.311-0.264 42.76-13.201 101.078-35.915 154.22-75.118 174.938-208.604 281.544-400.055 314.458-15.177 2.56-30.72 3.84-46.263 5.851z"
811
- ],
812
- "attrs": [],
813
- "isMulticolor": false,
814
- "grid": 0,
815
- "tags": [
816
- "world"
817
- ],
818
- "colorPermutations": {}
819
- },
820
- {
821
- "id": 3,
822
- "paths": [
823
- "M0 575.81c0-35.241 28.456-63.81 64.056-63.81h895.888c35.377 0 64.056 28.994 64.056 63.81v384.38c0 35.241-28.456 63.81-64.056 63.81h-895.888c-35.377 0-64.056-28.994-64.056-63.81v-384.38zM0 288c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 160c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 32c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 416c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32z"
824
- ],
825
- "attrs": [],
826
- "isMulticolor": false,
827
- "grid": 0,
828
- "tags": [
829
- "footer"
830
- ],
831
- "colorPermutations": {}
832
- },
833
- {
834
- "id": 4,
835
- "paths": [
836
- "M0 704.19c0 35.241 28.456 63.81 64.056 63.81h895.888c35.377 0 64.056-28.994 64.056-63.81v-384.38c0-35.241-28.456-63.81-64.056-63.81h-895.888c-35.377 0-64.056 28.994-64.056 63.81v384.38zM0 160c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 864c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 992c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 32c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32z"
837
- ],
838
- "attrs": [],
839
- "isMulticolor": false,
840
- "grid": 0,
841
- "tags": [
842
- "middle",
843
- "center"
844
- ],
845
- "colorPermutations": {}
846
- },
847
- {
848
- "id": 5,
849
- "paths": [
850
- "M0 448.19c0 35.241 28.456 63.81 64.056 63.81h895.888c35.377 0 64.056-28.994 64.056-63.81v-384.38c0-35.241-28.456-63.81-64.056-63.81h-895.888c-35.377 0-64.056 28.994-64.056 63.81v384.38zM0 736c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 864c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 992c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 608c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32z"
851
- ],
852
- "attrs": [],
853
- "isMulticolor": false,
854
- "grid": 0,
855
- "tags": [
856
- "header"
857
- ],
858
- "colorPermutations": {}
859
- },
860
- {
861
- "id": 6,
862
- "paths": [
863
- "M707.467 151.080c-2.704-9.436-9.638-16.489-18.143-19.762-0.335-0.134-0.671-0.263-1.011-0.385-0.338-0.116-0.678-0.224-1.020-0.328-3.334-1.063-6.841-1.586-10.376-1.438-0.732 0.032-1.507 0.048-2.322 0.048-4.964 0.008-11.389-0.645-18.57-2.063-12.594-2.459-27.479-7.227-42.21-13.683-11.060-4.833-22.069-10.603-32.15-16.917-7.561-4.732-14.603-9.77-20.762-14.877-4.621-3.827-8.744-7.693-12.233-11.443-5.247-5.621-9.006-11-11.161-15.356-1.087-2.179-1.496-4.090-1.911-5.683-0.417-1.597-0.265-2.865-0.265-3.929v-0.147c0-9.547-4.633-18.687-12.259-24.436-7.624-5.749-17.788-7.537-26.931-4.782l-474.675 143.044c-12.698 3.827-21.469 15.534-21.469 28.795v666.072c0 10.182 1.798 20.104 4.889 29.476 2.707 8.21 6.395 16.027 10.827 23.458 7.77 13.003 17.797 24.86 29.448 35.633 17.493 16.137 38.693 29.876 62.282 40.397 23.591 10.496 49.603 17.75 76.729 20.243 3.777 0.346 7.663-0.039 11.299-1.119 0.985-0.293 2.247-0.677 3.919-1.192 6.43-1.98 18.749-5.841 35.546-11.126 117.454-36.968 452.335-143.268 452.35-143.274 12.466-3.956 20.976-15.585 20.976-28.664v-653.767c0.633-4.15 0.433-8.495-0.798-12.795v0zM542.709 142.981c8.776 5.86 17.982 11.248 27.4 16.17-39.795 11.404-87.554 25.093-135.832 38.936-59.784 17.143-120.357 34.518-167.561 48.078-23.603 6.78-43.863 12.604-59.017 16.971-7.579 2.183-13.88 4.001-18.692 5.395-1.489 0.43-2.812 0.814-4.006 1.161-15.907-1.901-31.585-5.708-46.115-10.997-12.141-4.412-23.481-9.844-33.481-15.902-7.501-4.541-14.245-9.436-20.027-14.452-7.916-6.848-13.95-13.929-17.953-20.448l416.585-125.558c1.54 3.032 3.209 5.977 5.006 8.824 4.783 7.561 10.395 14.531 16.585 21.076 10.842 11.437 23.473 21.618 37.108 30.746v0zM105.647 913.493c-7.508-4.95-14.299-10.286-20.161-15.755-8.803-8.197-15.457-16.72-19.586-24.403-2.075-3.839-3.531-7.454-4.447-10.723-0.916-3.275-1.302-6.188-1.302-8.803v-568.871c14.659 10.516 31.171 19.49 48.965 26.74 14.961 6.078 30.833 10.922 47.275 14.275v610.805c-5.932-1.717-11.765-3.705-17.43-5.962-12.018-4.782-23.302-10.699-33.314-17.302v0zM256.541 919.698c-15.080 4.762-28.58 9.019-40 12.613v-609.125c15.947-4.6 40.601-11.481 69.172-19.743v267.943l83.133-83.765 55.211 27.922v-252.161c45.112-12.656 89.321-25.505 129.125-36.914 37.621-10.783 71.111-20.275 94.933-27.1v596.265c-42.103 13.361-141.164 44.792-237.658 75.363-56.069 17.762-111.271 35.236-153.917 48.702v0z"
864
- ],
865
- "attrs": [],
866
- "isMulticolor": false,
867
- "width": 727,
868
- "grid": 0,
869
- "tags": [
870
- "book"
871
- ],
872
- "colorPermutations": {}
873
- },
874
- {
875
- "id": 9,
876
- "paths": [
877
- "M504.231 955.882c22.087-9.699 42.18-20.276 60.268-31.085 39.815-23.797 69.925-48.698 90.442-68.056 1.536 0.142 3.092 0.214 4.664 0.214 27.658 0 50.078-22.421 50.078-50.078v-206.037c0-27.658-22.421-50.078-50.078-50.078s-50.078 22.421-50.078 50.078v200.346c-6.829 6.618-15.244 14.275-25.222 22.478-15.543 12.784-34.873 26.902-57.905 40.556-14.759 8.751-31.036 17.312-48.824 25.227-11.141-4.622-23.975-5.258-36.212-0.833-16.277 5.886-33.641 11.126-52.114 15.437-26.934 6.284-43.674 33.213-37.388 60.147 6.284 26.934 33.213 43.674 60.147 37.388 22.439-5.235 43.588-11.614 63.421-18.787 13.406-4.849 23.478-14.826 28.803-26.918zM101.589 702.427v-277.577c0.007-42.612 8.608-82.95 24.154-119.726 23.312-55.141 62.386-102.213 111.51-135.39 24.558-16.59 51.606-29.709 80.464-38.686 28.862-8.974 59.532-13.819 91.496-13.822 42.612 0.007 82.948 8.608 119.726 24.154 55.141 23.312 102.213 62.386 135.39 111.51 16.59 24.558 29.709 51.605 38.686 80.463 8.974 28.864 13.819 59.533 13.822 91.497v277.577c0 27.658 22.421 50.078 50.078 50.078s50.078-22.421 50.078-50.078v-277.577c0.007-56.165-11.411-109.929-32.066-158.743-30.991-73.243-82.631-135.406-147.685-179.366-32.532-21.979-68.44-39.405-106.787-51.33-38.341-11.929-79.124-18.344-121.243-18.342-56.165-0.007-109.929 11.411-158.743 32.066-73.243 30.991-135.406 82.629-179.366 147.685-21.977 32.532-39.405 68.44-51.33 106.787-11.929 38.34-18.344 79.124-18.342 121.243v277.577c0 27.658 22.421 50.078 50.078 50.078s50.078-22.421 50.078-50.078zM108.743 602.271v206.037c0 27.658 22.421 50.078 50.078 50.078s50.078-22.421 50.078-50.078v-206.037c0-27.658-22.421-50.078-50.078-50.078s-50.078 22.421-50.078 50.078z"
878
- ],
879
- "attrs": [],
880
- "isMulticolor": false,
881
- "width": 847,
882
- "grid": 0,
883
- "tags": [
884
- "support"
885
- ],
886
- "colorPermutations": {}
887
- },
888
- {
889
- "id": 33,
890
- "paths": [
891
- "M603.2 777.6c-36.8 36.8-148.8 36.8-184 0-19.2-19.2-35.2 0-35.2 19.2 0 33.6 0 78.4 0 112 0 19.2 17.6 36.8 36.8 19.2 11.2-11.2 24-24 36.8-36.8 11.2 27.2 25.6 64 36.8 92.8 9.6 24 27.2 24 36.8 0 9.6-25.6 27.2-70.4 36.8-92.8 9.6 9.6 17.6 17.6 36.8 36.8 17.6 17.6 36.8 0 36.8-19.2 0-32 0-78.4 0-112-1.6-19.2-19.2-38.4-38.4-19.2zM800 540.8c-19.2-19.2-80-60.8-80-80 0-168-51.2-307.2-144-400-52.8-52.8-76.8-51.2-128 0-92.8 92.8-144 232-144 400 0 17.6-62.4 62.4-80 80-36.8 36.8-32 76.8-32 96 0 56 25.6 140.8 32 160 11.2 36.8 60.8 35.2 80 16 36.8-36.8 83.2-83.2 96-96 56 56 168 56 224 0 12.8 12.8 59.2 59.2 96 96 19.2 19.2 70.4 20.8 80-16 4.8-19.2 32-104 32-160 0-19.2 4.8-59.2-32-96zM512 425.6c-52.8 0-96-43.2-96-96s43.2-96 96-96c51.2 0 96 44.8 96 96 0 49.6-43.2 96-96 96zM560 329.6c0 26.51-21.49 48-48 48s-48-21.49-48-48c0-26.51 21.49-48 48-48s48 21.49 48 48z"
892
- ],
893
- "attrs": [],
894
- "isMulticolor": false,
895
- "tags": [
896
- "rocket"
897
- ],
898
- "defaultCode": 106,
899
- "grid": 0,
900
- "colorPermutations": {}
901
- },
902
- {
903
- "id": 7,
904
- "paths": [
905
- "M797.496 32.018c0-3.36-0.111-5.277-0.139-5.804-0.472-8.415-4.721-16.135-11.581-21.023-6.86-4.916-15.552-6.443-23.662-4.138-5.388 1.416-162.048 47.823-387.305 306.712-98.062 16.358-160.549 52.878-197.291 97.062-38.908 46.657-47.712 98.701-47.656 135.36 0.028 31.021 6.026 52.044 6.526 53.794 3.166 10.942 12.719 18.857 24.050 19.912 11.359 1.083 22.217-4.916 27.383-15.080l0.361-0.667c2.138-4.138 14.136-26.078 30.549-45.879 2.138-2.611 4.499-4.943 6.776-7.415 0.417 0.305 0.639 0.833 1.083 1.139l91.314 63.931-14.775 56.682c-1.472 5.554 0.667 11.47 5.332 14.802 4.693 3.333 10.942 3.444 15.747 0.305l49.545-32.687 90.258 63.209c0.444 0.305 1.028 0.361 1.5 0.667-6.415 12.331-14.469 24.384-21.551 33.798-4.666 6.249-8.887 11.414-11.886 14.941l-3.471 3.971-0.861 0.972-0.167 0.194c-7.721 8.276-9.637 20.496-4.832 30.743 4.832 10.248 15.469 16.552 26.744 15.913 2.638-0.305 49.406-2.86 98.618-34.132 24.495-15.663 49.462-38.936 67.93-72.262 18.468-33.298 30.16-76.206 30.105-129.722 0-25.828-2.86-54.349-8.693-85.537 151.19-270.636 160.104-428.047 160.049-459.762v0zM636.142 135.69c43.796-32.521 78.455-52.489 102.617-64.625-10.664 80.372-58.487 276.579-265.998 579.486l-84.176-58.932 141.275-200.401c4.416-6.249 2.916-14.913-3.36-19.329s-14.941-2.944-19.357 3.333l-141.303 200.457-84.454-59.126c143.025-199.874 266.776-315.432 354.757-380.862v0zM189.877 501.583c4.666-19.94 13.636-41.213 30.299-61.181 18.774-22.467 48.323-44.379 94.841-60.709-20.94 26.244-42.296 54.155-64.097 84.065-15.774 3.583-29.466 11.164-41.186 19.968-7.248 5.499-13.719 11.609-19.857 17.857v0zM339.123 638.609l3.027-11.692 7.137 4.999-10.164 6.693zM590.596 577.317c-0.028 45.657-9.665 78.4-23.162 102.783-13.691 24.661-31.826 41.297-50.184 52.85 1.722-3.527 3.61-6.887 5.166-10.609 6.304-15.274 11.136-31.938 11.192-50.017 0-3.749-0.278-7.582-0.778-11.442 20.634-30.688 40.075-60.543 57.599-89.12 0.028 1.833 0.167 3.777 0.167 5.554zM213.4 843.065l63.681-90.953c8.804-12.581 5.749-29.882-6.804-38.686-12.581-8.804-29.882-5.749-38.686 6.832l-63.681 90.953c-8.804 12.581-5.749 29.882 6.832 38.686 12.553 8.804 29.882 5.749 38.658-6.832zM326.848 798.297l-127.417 181.989c-8.804 12.553-5.749 29.882 6.832 38.686 12.553 8.804 29.855 5.749 38.658-6.832l127.417-181.989c8.804-12.553 5.749-29.855-6.832-38.658-12.553-8.804-29.882-5.749-38.658 6.804zM171.104 680.406c-12.553-8.804-29.882-5.749-38.658 6.804l-127.417 181.989c-8.804 12.553-5.749 29.882 6.832 38.686 12.553 8.776 29.855 5.749 38.658-6.832l127.417-181.961c8.804-12.581 5.749-29.882-6.832-38.686zM543.218 346.394c7.609 5.304 16.302 7.859 24.911 7.859 13.691 0 27.161-6.443 35.631-18.524 13.775-19.69 9.026-46.768-10.664-60.543-7.582-5.332-16.274-7.887-24.884-7.887-13.719 0-27.189 6.471-35.659 18.552-13.719 19.662-8.998 46.768 10.664 60.543z"
906
- ],
907
- "attrs": [],
908
- "isMulticolor": false,
909
- "width": 800,
910
- "grid": 0,
911
- "tags": [
912
- "rocket"
913
- ],
914
- "colorPermutations": {}
915
- },
916
- {
917
- "id": 25,
918
- "paths": [
919
- "M568 848h-112l20.8-120c-28.8-12.8-48-41.6-48-75.2 0-46.4 36.8-83.2 83.2-83.2s83.2 36.8 83.2 83.2c0 33.6-19.2 62.4-48 75.2l20.8 120zM624 456h-224v-168c0-62.4 51.2-112 112-112s112 49.6 112 112v168zM736 456v-168c0-123.2-100.8-224-224-224s-224 100.8-224 224v168h-56c-30.4 0-56 25.6-56 56v392c0 30.4 25.6 56 56 56h560c30.4 0 56-25.6 56-56v-392c0-30.4-25.6-56-56-56h-56z"
920
- ],
921
- "attrs": [],
922
- "isMulticolor": false,
923
- "tags": [
924
- "lock"
925
- ],
926
- "defaultCode": 97,
927
- "grid": 0,
928
- "colorPermutations": {}
929
- },
930
- {
931
- "id": 26,
932
- "paths": [
933
- "M800 448h-64v-160c0-123.2-100.8-224-224-224s-224 100.8-224 224c0 0 0 40 0 48s8 16 16 16 72 0 80 0c8 0 16-8 16-16s0-48 0-48c0-62.4 51.2-112 112-112 62.4 0 112 49.6 112 112v160h-400c-30.4 0-48 17.6-48 48v408c0 30.4 25.6 56 56 56h560c30.4 0 56-25.6 56-56v-408c0-30.4-17.6-48-48-48zM547.2 728l20.8 120h-112l20.8-120c-28.8-12.8-48-41.6-48-75.2 0-46.4 36.8-83.2 83.2-83.2s83.2 36.8 83.2 83.2c0 32-19.2 60.8-48 75.2z"
934
- ],
935
- "attrs": [],
936
- "isMulticolor": false,
937
- "tags": [
938
- "unlock"
939
- ],
940
- "defaultCode": 99,
941
- "grid": 0,
942
- "colorPermutations": {}
943
- },
944
- {
945
- "id": 27,
946
- "paths": [
947
- "M272 224c16-16 544 512 528 528-65.6 65.6-160 112-272 112-75.2 0-164.8 0-224 0-12.8 0-24 4.8-32 12.8-20.8 17.6-38.4 38.4-59.2 57.6-35.2 33.6-86.4 33.6-120 0-35.2-33.6-35.2-84.8-1.6-121.6 17.6-19.2 38.4-36.8 56-57.6 8-9.6 12.8-22.4 12.8-35.2 0-67.2 0-139.2 0-224 0-112 48-208 112-272zM785.6 606.4c-16 16-128-96-112-112s139.2-137.6 176-174.4c33.6-33.6 144 80 112 110.4-59.2 59.2-116.8 116.8-176 176zM545.6 366.4c-16 16-128-96-112-112s139.2-137.6 176-174.4c33.6-33.6 144 80 112 110.4-59.2 59.2-116.8 116.8-176 176z"
948
- ],
949
- "attrs": [],
950
- "isMulticolor": false,
951
- "tags": [
952
- "plugin"
953
- ],
954
- "defaultCode": 100,
955
- "grid": 0,
956
- "colorPermutations": {}
957
- },
958
- {
959
- "id": 39,
960
- "paths": [
961
- "M779.2 667.2c-27.2 27.2-67.2 27.2-94.4 0l-172.8-172.8-172.8 172.8c-27.2 27.2-67.2 27.2-94.4 0s-27.2-67.2 0-94.4l204.8-204.8c14.4-14.4 32-32 62.4-32s49.6 17.6 62.4 32l204.8 204.8c27.2 27.2 27.2 67.2 0 94.4z"
962
- ],
963
- "attrs": [],
964
- "isMulticolor": false,
965
- "tags": [
966
- "caret up"
967
- ],
968
- "defaultCode": 114,
969
- "grid": 0,
970
- "colorPermutations": {}
971
- },
972
- {
973
- "id": 71,
974
- "paths": [
975
- "M451.2 779.2l204.8-204.8c14.4-14.4 32-32 32-62.4s-17.6-49.6-32-62.4l-204.8-204.8c-27.2-27.2-67.2-27.2-94.4 0s-27.2 67.2 0 94.4l172.8 172.8-172.8 172.8c-27.2 27.2-27.2 67.2 0 94.4s67.2 27.2 94.4 0z"
976
- ],
977
- "attrs": [],
978
- "isMulticolor": false,
979
- "tags": [
980
- "caret right"
981
- ],
982
- "defaultCode": 101,
983
- "grid": 0,
984
- "colorPermutations": {}
985
- },
986
- {
987
- "id": 28,
988
- "paths": [
989
- "M779.2 451.2l-204.8 204.8c-14.4 14.4-32 32-62.4 32s-49.6-17.6-62.4-32l-204.8-204.8c-27.2-27.2-27.2-67.2 0-94.4s67.2-27.2 94.4 0l172.8 172.8 172.8-172.8c27.2-27.2 67.2-27.2 94.4 0s27.2 67.2 0 94.4z"
990
- ],
991
- "attrs": [],
992
- "isMulticolor": false,
993
- "tags": [
994
- "caret down"
995
- ],
996
- "defaultCode": 101,
997
- "grid": 0,
998
- "colorPermutations": {}
999
- },
1000
- {
1001
- "id": 72,
1002
- "paths": [
1003
- "M572.8 779.2l-204.8-204.8c-14.4-14.4-32-32-32-62.4s17.6-49.6 32-62.4l204.8-204.8c27.2-27.2 67.2-27.2 94.4 0s27.2 67.2 0 94.4l-172.8 172.8 172.8 172.8c27.2 27.2 27.2 67.2 0 94.4s-67.2 27.2-94.4 0z"
1004
- ],
1005
- "attrs": [],
1006
- "isMulticolor": false,
1007
- "tags": [
1008
- "caret left"
1009
- ],
1010
- "defaultCode": 101,
1011
- "grid": 0,
1012
- "colorPermutations": {}
1013
- },
1014
- {
1015
- "id": 29,
1016
- "paths": [
1017
- "M848 233.6c-16-20.8-46.4-24-67.2-6.4-20.8 16-24 46.4-6.4 67.2v0c48 59.2 75.2 131.2 75.2 212.8 0 92.8-38.4 177.6-99.2 238.4s-145.6 99.2-238.4 99.2c-92.8 0-177.6-38.4-238.4-99.2s-99.2-145.6-99.2-238.4c0-80 27.2-153.6 75.2-212.8 16-20.8 12.8-49.6-6.4-67.2-20.8-16-49.6-12.8-67.2 6.4-60.8 75.2-96 169.6-96 272 0 118.4 48 227.2 126.4 305.6s185.6 126.4 305.6 126.4c118.4 0 227.2-48 305.6-126.4s126.4-187.2 126.4-307.2c0-102.4-35.2-196.8-96-270.4zM512 561.6c27.2 0 48-20.8 48-48v-384c0-27.2-20.8-48-48-48s-48 20.8-48 48v384c0 27.2 20.8 48 48 48z"
1018
- ],
1019
- "attrs": [],
1020
- "isMulticolor": false,
1021
- "tags": [
1022
- "power"
1023
- ],
1024
- "defaultCode": 102,
1025
- "grid": 0,
1026
- "colorPermutations": {}
1027
- },
1028
- {
1029
- "id": 31,
1030
- "paths": [
1031
- "M512 156.8c195.2 0 355.2 158.4 355.2 355.2s-160 355.2-355.2 355.2-355.2-160-355.2-355.2 160-355.2 355.2-355.2zM512 64c-248 0-448 200-448 448s200 448 448 448 448-200 448-448-200-448-448-448z"
1032
- ],
1033
- "attrs": [],
1034
- "isMulticolor": false,
1035
- "tags": [
1036
- "radio_default"
1037
- ],
1038
- "defaultCode": 104,
1039
- "grid": 0,
1040
- "colorPermutations": {}
1041
- },
1042
- {
1043
- "id": 30,
1044
- "paths": [
1045
- "M512 64c-248 0-448 200-448 448s200 448 448 448 448-200 448-448-200-448-448-448zM720 464l-176 176c-3.2 3.2-28.8 32-64 32s-60.8-28.8-64-32l-112-112c-16-16-16-48 0-64s48-14.4 64 1.6l112 110.4 176-176c16-16 48-16 64 0s16 48 0 64z"
1046
- ],
1047
- "attrs": [],
1048
- "isMulticolor": false,
1049
- "tags": [
1050
- "radio_checked"
1051
- ],
1052
- "defaultCode": 103,
1053
- "grid": 0,
1054
- "colorPermutations": {}
1055
- },
1056
- {
1057
- "id": 45,
1058
- "paths": [
1059
- "M608 512l208-208c28.8-28.8 28.8-67.2 0-96s-67.2-28.8-96 0l-208 208-208-208c-28.8-28.8-67.2-28.8-96 0s-28.8 67.2 0 96l208 208-208 208c-28.8 28.8-28.8 67.2 0 96s67.2 28.8 96 0l208-208 208 208c28.8 28.8 67.2 28.8 96 0s28.8-67.2 0-96l-208-208z"
1060
- ],
1061
- "attrs": [],
1062
- "isMulticolor": false,
1063
- "tags": [
1064
- "cross"
1065
- ],
1066
- "defaultCode": 121,
1067
- "grid": 0,
1068
- "colorPermutations": {}
1069
- },
1070
- {
1071
- "id": 46,
1072
- "paths": [
1073
- "M400 667.2l-256-256c-28.8-28.8-83.2-28.8-112 0s-28.8 83.2 0 112l304 304c14.4 14.4 32 32 64 32s49.6-17.6 64-32l528-528c28.8-28.8 28.8-83.2 0-112s-83.2-28.8-112 0l-480 480z"
1074
- ],
1075
- "attrs": [],
1076
- "isMulticolor": false,
1077
- "tags": [
1078
- "tick"
1079
- ],
1080
- "defaultCode": 122,
1081
- "grid": 0,
1082
- "colorPermutations": {}
1083
- },
1084
- {
1085
- "id": 34,
1086
- "paths": [
1087
- "M923.2 822.4l-228.8-230.4c33.6-52.8 52.8-112 52.8-179.2-1.6-184-150.4-332.8-334.4-332.8s-332.8 148.8-332.8 332.8 148.8 332.8 332.8 332.8c67.2 0 126.4-19.2 179.2-52.8l230.4 230.4c28.8 28.8 73.6 28.8 100.8 0s27.2-73.6 0-100.8zM174.4 412.8c0-131.2 105.6-238.4 238.4-238.4s238.4 105.6 238.4 238.4-107.2 236.8-238.4 236.8-238.4-105.6-238.4-236.8z"
1088
- ],
1089
- "attrs": [],
1090
- "isMulticolor": false,
1091
- "tags": [
1092
- "search"
1093
- ],
1094
- "defaultCode": 107,
1095
- "grid": 0,
1096
- "colorPermutations": {}
1097
- },
1098
- {
1099
- "id": 37,
1100
- "paths": [
1101
- "M512 160c195.2 0 352 156.8 352 352s-156.8 352-352 352-352-156.8-352-352 156.8-352 352-352zM512 64c-248 0-448 200-448 448s200 448 448 448 448-200 448-448-200-448-448-448zM523.2 563.2c0 11.2 6.4 19.2 6.4 30.4 0 14.4-11.2 28.8-27.2 28.8-27.2 0-41.6-41.6-41.6-64 0-92.8 121.6-102.4 121.6-174.4 0-33.6-24-62.4-76.8-62.4-36.8 0-65.6 14.4-88 36.8-6.4 4.8-12.8 8-20.8 8-16 0-30.4-14.4-30.4-32 0-6.4 1.6-14.4 6.4-19.2 32-38.4 84.8-59.2 139.2-59.2 88 0 142.4 51.2 142.4 116.8 1.6 110.4-131.2 120-131.2 190.4zM508.8 768c-24 0-44.8-20.8-44.8-46.4 0-24 19.2-46.4 44.8-46.4 24 0 44.8 22.4 44.8 46.4-1.6 25.6-22.4 46.4-44.8 46.4z"
1102
- ],
1103
- "attrs": [],
1104
- "isMulticolor": false,
1105
- "tags": [
1106
- "info"
1107
- ],
1108
- "defaultCode": 112,
1109
- "grid": 0,
1110
- "colorPermutations": {}
1111
- },
1112
- {
1113
- "id": 10,
1114
- "paths": [
1115
- "M798 468c18-10 32-30 32-52 0-32-26-58-58-58-34-120-62-230-62-230s-34-128-198-128c-164 0-198 128-198 128s-28 110-62 230c-32 0-58 26-58 58 0 22 14 42 32 52-32 118-62 224-62 224 0 10 22 22 56 28 10-40 22-98 36-146 22-76 58-120 120-142-36-12-54-58-62-110l124 66 78-74 14 198h-110c0 0 70 36 146 36 8-6 4-84 0-182l22 26 126-66c-8 48-26 94-64 106 64 26 104 70 122 142 10 48 26 106 36 146 34-6 56-18 56-28-4 0-34-106-66-224zM420 304l-90-74 150 16zM604 304l-62-58 150-16zM798 728c0 0-148 66-216 66-70 0-66-58-66-66h-8c-4 8 4 66-66 66-68 0-216-66-216-66l-44 182 330 114 332-114zM458 622h108v36h-108z"
1116
- ],
1117
- "attrs": [],
1118
- "isMulticolor": false,
1119
- "tags": [
1120
- "wpmudev-devman"
1121
- ],
1122
- "defaultCode": 108,
1123
- "grid": 0,
1124
- "colorPermutations": {}
1125
- },
1126
- {
1127
- "id": 16,
1128
- "paths": [
1129
- "M810 356l-18-234-122-82-112-12-180 166 228 24zM16 580l176 86 26-322-198 182zM1012 580l-496 244 210 104 302-148zM984 254l-192-132 42 546 178-88zM316 0l-274 254-22 272 538-498zM0 780l514 248 212-100-710-348z"
1130
- ],
1131
- "attrs": [],
1132
- "isMulticolor": false,
1133
- "tags": [
1134
- "wpmudev-upfront"
1135
- ],
1136
- "defaultCode": 68,
1137
- "grid": 0,
1138
- "colorPermutations": {}
1139
- },
1140
- {
1141
- "id": 62,
1142
- "paths": [
1143
- "M757.583 355.928c11.477-11.477 18.575-27.331 18.575-44.844 0-35.025-28.394-63.419-63.419-63.419-17.513 0-33.368 7.098-44.844 18.575-10.923 11.137-17.664 26.409-17.664 43.255 0 0.372 0.003 0.744 0.010 1.115-0.009 0.316-0.013 0.754-0.013 1.193 0 34.42 27.903 62.323 62.323 62.323 0.439 0 0.877-0.005 1.314-0.014-0.064 0.001-0.062 0.001-0.061 0.001 17.106 0 32.589-6.951 43.778-18.183zM623.051 400.772c-22.791-22.051-36.94-52.915-36.94-87.082 0-1.103 0.015-2.202 0.044-3.297-0.060-1.246-0.092-2.898-0.092-4.558 0-69.717 56.517-126.234 126.234-126.234s126.234 56.517 126.234 126.234c0 1.66-0.032 3.312-0.096 4.957 0.068 1.193 0.102 2.87 0.102 4.555 0 33.365-13.531 63.569-35.405 85.426-22.405 21.845-53.059 35.319-86.861 35.319-0.498 0-0.995-0.003-1.491-0.009-1.977 0.127-4.375 0.198-6.791 0.198-33.231 0-63.289-13.581-84.928-35.496zM784.772 776.828c0-0.098 0-0.214 0-0.33 0-28.728-2.182-56.946-6.39-84.498q-6.674-51.469 6.39-64.711c-104.163 104.549 12.74 3.697 101.875-118.677-55.039 80.477 21.701-15.244 74.999-124.498-5.498 21.297 27.966-51.503 46.666-130.027 10.199-43.067 15.641-88.167 15.687-134.53q0-74.712-23.834-97.664t-95.868-21.892c-46.070 0.004-91.085 5.603-134.153 16.159 28.939-12.216-54.196 10.331-129.672 46.343 77.853-41.806-31.522 6.241-125.255 74.477 118.509-87.564-12.674-5.057-119.168 102.027q-12.226 12.226-68.722 6.047t-80.154-6.003c-3.046-0.29-6.585-0.455-10.163-0.455-25.805 0-49.602 8.597-68.684 23.082q-27.084 23.276-41.384 37.224c27.28-35.625-31.619 25.214-72.705 97.5q-36.581 63.162-46.115 81.877c-4.572 7.318-7.283 16.205-7.283 25.726 0 13.972 5.838 26.58 15.208 35.519 10.411 14.901 29.204 26.422 50.759 28.422l107.274 0.021q54.731 0 72.386 0c0.62 55.862 25.696 107.667 65.339 143.745 34.953 38.736 86.445 64.019 143.857 65.113q1.077 17.658 0.194 72.389t0 106.99c0.871 20.401 11.99 40.168 28.77 52.832 8.854 9.49 21.208 15.327 34.926 15.327 9.675 0 18.672-2.904 26.166-7.888l78.745-45.441c-29.723 23.258 42.571-18.267 100.585-74.45q13.821-13.826 37.302-41.014c14.292-18.785 22.897-42.572 22.897-68.369 0-3.652-0.172-7.264-0.51-10.828zM378.703 814.257q-50.494 0-111.228-60.734t-60.734-111.228q0.883-27.012-17.655-28.072c-0.688-0.041-1.493-0.064-2.303-0.064-11.959 0-22.741 5.038-30.339 13.107l-105.951 105.952c-7.15 6.829-11.595 16.437-11.595 27.084 0 1.655 0.107 3.285 0.316 4.884q1.922 18.526 28.052 20.292h69.208q-10.593 26.659-24.541 58.968t-27.189 60.557c-3.134 4.806-4.999 10.688-4.999 17.006 0 6.87 2.204 13.225 5.945 18.397 4.631 3.246 10.481 5.244 16.797 5.244s12.166-1.998 16.951-5.397q24.274-11.062 61.526-26.951l59.851-25.247q0 13.065 0 27.542t0 41.49c-0.233 1.233-0.367 2.652-0.367 4.102 0 11.657 8.624 21.3 19.841 22.896 2.129 0.405 4.435 0.628 6.794 0.628 10.166 0 19.363-4.151 25.988-10.851l104.875-104.875c6.815-8.468 10.939-19.352 10.939-31.2 0-1.447-0.061-2.879-0.182-4.295q-1.4-19.060-29.471-19.060z"
1144
- ],
1145
- "attrs": [],
1146
- "isMulticolor": false,
1147
- "grid": 0,
1148
- "tags": [
1149
- "hummingbird"
1150
- ],
1151
- "colorPermutations": {}
1152
- },
1153
- {
1154
- "id": 69,
1155
- "paths": [
1156
- "M836.149 346.571c7.483-36.21-2.216 28.877-18.984 91.063 12.733-9.516-27.719 112.534-90.884 219.586 21.638-1.365-83.817 143.882-221.683 248.702l-22.964 17.090c-4.412 2.891-9.818 4.611-15.625 4.611s-11.213-1.72-15.735-4.679l-2.538-0.815-19.421-14.654c-2.618 20.020-135.11-100.592-223.789-250.229-6.611-11.597-11.025-19.365-15.262-27.134 60.454 104.853 3.792 19.941-35.933-73.884-43.388-102.226-67.491-215.092-67.526-333.584-0-1.073-0-2.132-0-3.015 0-8.828 0-17.655 0-26.306-0.023-0.422-0.037-0.916-0.037-1.412s0.013-0.991 0.040-1.481c-0.066-0.646-0.102-1.476-0.102-2.315s0.036-1.67 0.106-2.49c0.831-7.653 6.206-15.435 13.802-19.771-1.342 0.6 1.387-0.991 4.392-1.97l0.16-0.045c8.651-3.884 17.655-7.768 25.953-11.299-68.26 26.429 17.317-13.015 109.005-37.494 71.809-19.158 147.446-29.39 225.473-29.39s153.664 10.232 225.643 29.427c-63.3-19.62 30.059 3.042 116.233 39.39q8.491 3.717 22.439 10.249c9.004 4.137 15.58 13.234 16.239 23.931l0.004 0.081c0 10.063 0 20.127 0 30.19 0 1.059 0 2.119 0 3.178 0.001 0.449 0.001 0.98 0.001 1.511 0 43.386-3.274 86.007-9.588 127.63zM732.866 444.734h-2.648l-5.297 0.883c14.98-20.528-234.445 43.985-461.092 149.267l12.474-5.2-3.178 1.412-6.532 3.001c-12.357 7.588-20.477 21.030-20.48 36.369-0.008 0.316-0.013 0.688-0.013 1.061 0 8.020 2.237 15.517 6.122 21.901l-0.105-0.187c-28.723-16.918 67.487 115.537 192.366 212.951l5.196 4.031c-2.892-1.681 0.951 0.982 5.257 2.746 3.281 1.292 6.831 1.996 10.545 1.996s7.264-0.704 10.524-1.985c-2.767 1.345 1.597-0.349 5.4-2.832l3.232-2.573c-2.954 22.686 121.104-90.887 204.65-231.368-27.53 56.203 30.813-39.564 67.65-145.403 1.709-7.759 3.121-9.701 3.827-11.82v0c0.086-0.873 0.135-1.887 0.135-2.913s-0.049-2.040-0.144-3.041c-0.085-15.408-12.554-28.001-28.034-28.297zM787.597 195.972c1.65 0.612-4.461-4.267-11.547-7.308 69.21 26.78-10.842-9.765-96.458-32.707-68.289-18.189-140.156-27.892-214.29-27.892s-146.001 9.703-214.401 27.908c65.558-19.796-21.197 1.107-101.41 34.56 6.226-3.164-1.027 0.568-6.877 5.828-2.485 1.051-8.402 8.523-11.519 17.32-1.364 3.399-2.395 8.149-2.562 13.118l-0.002 2.718c0.178 93.262 18.101 188.172 50.737 275.925l0.639 1.085c4.879 9.2 14.396 15.36 25.352 15.36 0.025 0 0.050-0 0.076-0 2.876-0.001 5.68-0.453 8.313-1.289l7.22-3.301 15.007-5.297c12.421-23.546 252.262-113.836 508.637-154.443l11.131-1.453 7.062-0.883c16.607-3.504 30.083-17.498 32.981-35.059l0.034-2.37c2.806-17.151 5.717-52.069 6.346-87.545l0.010-0.731v-3.531c-0.301-11.393-5.827-22.388-14.431-29.973zM928.839 155.012v0-3.884c-1.45-19.185-13.611-37.652-31.129-48.035l-8.595-3.871c-123.554-62.554-269.36-99.192-423.724-99.192s-300.171 36.639-429.198 101.694l-0.706 0.5c-17.981 9.809-31.053 29.183-32.476 51.721l-0.009 0.185c-2.295 22.422-3.001 45.55-3.001 68.502-0 0.347-0.001 0.758-0.001 1.168 0 132.824 27.602 259.201 77.382 373.708q15.309 34.37 35.789 72.859c0.214 48.775 134.179 221.365 308.837 337.68l13.546 8.714c8.615 4.561 18.832 7.239 29.674 7.239 0.057 0 0.115-0 0.172-0 0.27 0.004 0.6 0.007 0.93 0.007 10.76 0 20.893-2.681 29.769-7.412l9.545-6.19c170.176-91.26 341.8-313.48 402.374-578.038q10.227-46.955 15.7-88.974c4.833-36.003 7.592-77.623 7.592-119.887 0-0.245-0-0.491-0-0.736q-0.353-34.213-2.825-67.758z"
1157
- ],
1158
- "attrs": [],
1159
- "isMulticolor": false,
1160
- "width": 931,
1161
- "grid": 0,
1162
- "tags": [
1163
- "defender"
1164
- ],
1165
- "colorPermutations": {}
1166
- },
1167
- {
1168
- "id": 35,
1169
- "paths": [
1170
- "M336 256c113.6 113.6 224 224 336 336 16 16 16 33.6 0 48-24 24-57.6 57.6-80 80-16 16-32 16-48 0-17.6-17.6-62.4-62.4-80-80-30.4-28.8-51.2-12.8-64 0-16 16-80 128-160 208-81.6 81.6-152 104-208 48s-33.6-126.4 48-208c80-80 192-144 208-160s32-32 0-64c-19.2-19.2-60.8-60.8-80-80-16-16-16-32 0-48 24-24 56-56 80-80 16-16 32-17.6 48 0zM384 160c17.6-17.6 36.8-35.2 56-52.8 27.2-25.6 62.4-19.2 94.4-16 44.8 4.8 84.8 24 121.6 51.2 32 25.6 64 52.8 99.2 75.2 81.6 54.4 169.6 92.8 268.8 73.6-80 80-176 172.8-256 252.8-16 16-32 16-48 0-30.4-30.4-310.4-308.8-337.6-336-14.4-14.4-14.4-32 1.6-48z"
1171
- ],
1172
- "attrs": [],
1173
- "isMulticolor": false,
1174
- "tags": [
1175
- "theme"
1176
- ],
1177
- "defaultCode": 108,
1178
- "grid": 0,
1179
- "colorPermutations": {}
1180
- },
1181
- {
1182
- "id": 58,
1183
- "paths": [
1184
- "M1005.714 124.343l-105.874-106.057c-11.205-10.989-26.57-17.772-43.52-17.772s-32.315 6.783-43.53 17.782l-90.139 89.773c-5.001 4.942-8.098 11.801-8.098 19.383s3.097 14.441 8.095 19.38l155.066 154.883c4.933 4.946 11.755 8.006 19.291 8.006s14.358-3.060 19.291-8.005l89.418-90.332c11.28-10.805 18.29-25.989 18.29-42.81 0-0.25-0.002-0.499-0.005-0.748 0.003-0.173 0.005-0.423 0.005-0.672 0-16.821-7.010-32.005-18.269-42.79zM85.577 764.343l-6.4 4.754-1.646 4.754-75.703 219.429-1.829 5.669c-0.513 1.557-0.809 3.35-0.809 5.211s0.296 3.654 0.843 5.333c-0.303 0.398 1.78 4.222 4.722 7.195 1.212 2.436 4.596 5.222 8.667 6.372 1.411 0.533 2.92 0.826 4.497 0.826s3.085-0.294 4.474-0.829l4.669-3.263 219.429-74.24 6.4-3.291 4.754-4.754c3.012-4.003 4.823-9.059 4.823-14.537s-1.811-10.534-4.868-14.6l-146.241-146.223c-3.377-2.079-7.47-3.311-11.849-3.311-0.334 0-0.667 0.007-0.998 0.021-0.021-0.003-0.101-0.003-0.181-0.003-4.96 0-9.371 2.351-12.18 6zM141.897 727.771l154.697 154.88c4.341 4.569 10.461 7.411 17.245 7.411 0.753 0 1.497-0.035 2.232-0.103 8.182-0.993 15.802-6.995 19.227-15.186l508.222-505.218c4.805-1.237 8.299-5.531 8.299-10.641 0-0.83-0.092-1.638-0.267-2.415 0.044-0.358 0.062-0.86 0.062-1.367 0-6.796-3.142-12.858-8.052-16.813l-154.739-154.912c-4.933-4.946-11.755-8.006-19.291-8.006s-14.358 3.060-19.291 8.005l-507.612 505.783c-4.946 4.933-8.006 11.755-8.006 19.291s3.060 14.358 8.005 19.291z"
1185
- ],
1186
- "attrs": [],
1187
- "isMulticolor": false,
1188
- "grid": 0,
1189
- "tags": [
1190
- "pencil",
1191
- "edit"
1192
- ],
1193
- "colorPermutations": {}
1194
- },
1195
- {
1196
- "id": 53,
1197
- "paths": [
1198
- "M1061.82 351.266h-294.154c-0.215 0.002-0.468 0.003-0.722 0.003-32.971 0-61.217-20.227-73.008-48.949 2.219 5.396-0.573-0.484-2.378-6.781l-86.442-257.146-2.101-6.494c-8.374-19.126-27.135-32.245-48.96-32.245-23.194 0-42.927 14.817-50.25 35.502l-0.115 0.373-87.291 257.862c1.558-5.097-0.132 1.945-2.835 8.46-12.006 28.401-40.045 48.274-72.727 48.274-0.296 0-0.592-0.002-0.887-0.005l0.045 0h-294.727c-25.642 3.248-45.271 24.925-45.271 51.186 0 0.136 0.001 0.272 0.002 0.407 0.027 16.564 8.167 31.293 20.675 40.373l2.628 1.819 229.211 161.021c20.484 13.761 33.881 36.915 34 63.206 0 0.107 0.001 0.211 0.001 0.316 0 6.067-0.767 11.955-2.208 17.572 1.142-2.679-1.008 5.384-4.459 12.715l-86.355 256.883v1.91c-1.388 4.412-2.187 9.486-2.187 14.747 0 28.061 22.748 50.808 50.808 50.808 0.702 0 1.401-0.014 2.096-0.042-0.047 0.003 0.015 0.004 0.077 0.004 9.536 0 18.494-2.478 26.264-6.826l8.705-6.163 231.885-162.74c12.206-7.704 27.058-12.276 42.977-12.276s30.771 4.572 43.314 12.474c-7.243-4.386 0.917-0.236 7.788 5.423l-0.102-0.082 231.885 162.931c7.777 4.564 17.128 7.259 27.108 7.259 0.073 0 0.145-0 0.218-0 0.221 0.004 0.495 0.006 0.77 0.006 28.12 0 51.003-22.423 51.745-50.364-0.002-5.381-0.911-10.616-2.582-15.497l0.101-2.144-88.055-258.435c1.605 4.417-1.49-2.474-3.341-9.859-1.674-6.132-2.58-12.65-2.58-19.38 0-0.062 0-0.124 0-0.186 0.066-24.265 11.745-45.936 29.802-59.64l6.108-4.338 226.155-158.729 6.303-4.011c11.197-8.706 18.704-22.538 19.1-38.138-0.050-26.51-20.083-48.268-45.805-51.043z"
1199
- ],
1200
- "attrs": [],
1201
- "isMulticolor": false,
1202
- "width": 1108,
1203
- "grid": 0,
1204
- "tags": [
1205
- "star"
1206
- ],
1207
- "colorPermutations": {}
1208
- },
1209
- {
1210
- "id": 52,
1211
- "paths": [
1212
- "M57.026 56.85c-0 0-0 0-0 0 0 31.397 25.452 56.85 56.85 56.85 0.062 0 0.124-0 0.177-0h568.497c0 0 0 0 0 0 31.397 0 56.85-25.452 56.85-56.85s-25.452-56.85-56.85-56.85c-0 0-0 0-0 0l-568.506 0c-31.383 0.099-56.817 25.472-57.017 56.85zM739.585 341.274c31.286-0.099 56.641-25.392 56.84-56.673l-0-57.026c0-0 0-0.001 0-0.001 0-31.397-25.452-56.85-56.85-56.85-0.124 0-0.248 0-0.353 0.001l-681.833 0c-0.062-0-0.124-0-0.186-0-31.433 0-56.926 25.431-57.026 56.85l-0 56.85c0 31.397 25.452 56.85 56.85 56.85l0 625.523c-0 0-0 0-0 0 0 31.53 25.51 57.102 57.026 57.202l568.516-0c31.457-0.2 56.908-25.713 57.007-57.203v-625.523zM170.726 341.274h113.699v569.026h-113.699v-569.026zM341.451 341.274h113.699v569.026h-113.699v-569.026zM512.177 341.274h113.699v569.026h-113.876v-569.026z"
1213
- ],
1214
- "attrs": [],
1215
- "isMulticolor": false,
1216
- "width": 796,
1217
- "grid": 0,
1218
- "tags": [
1219
- "trash"
1220
- ],
1221
- "colorPermutations": {}
1222
- },
1223
- {
1224
- "id": 56,
1225
- "paths": [
1226
- "M0 719.978c3.708-17.655 6.532-35.31 11.299-51.377-7.126 8.74 11.71-43.949 40.441-89.805q27.355-46.14 55.426-93.985l5.12-9.357c-17.655-11.123-33.898-21.539-50.141-33.015 5.822 5.696-10.335-5.639-22.639-20.313-4.919-5.51-7.844-12.605-7.844-20.383 0-9.889 4.727-18.675 12.046-24.219-3.645 1.351 9.614-8.768 24.869-15.010 56.421-23.003 112.387-45.249 168.178-67.494-6.106 1.961 5.043-2.664 16.931-5.336 4.708-1.271 9.284-1.923 14.013-1.923 26.118 0 47.589 19.9 50.077 45.365 0.783 4.665 1.359 11.168 1.428 17.793 0.001 57.978 0.001 116.063 0.001 173.972-0.021 10.077-2.028 20.3-5.67 29.708-4.239 12.323-16.269 21.427-30.425 21.427-3.504 0-6.878-0.558-10.037-1.589 6.52 3.21-10.628-2.488-25.818-11.211-5.909-3.025-11.736-7.615-17.032-11.499l-19.068-12.359c8.284-9.307 1.068-2.312-4.432 5.926q-27.524 46.156-54.89 92.060c-6.004 6.006-17.172 30.182-21.757 56.615-1.298 6.087-1.965 11.997-1.965 18.063 0 36.533 24.174 67.419 57.399 77.535 13.393 5.084 32.907 9.050 53.262 9.677 47.947 1.243 95.616 0.007 143.991 0.007v127.47c-2.295 0-4.767 0-7.415 0-47.669 0-95.338 0-143.007 0-1.38 0.024-3.009 0.037-4.641 0.037-53.195 0-103.050-14.302-145.929-39.269-40.348-21.217-73.7-67.505-80.455-122.039 0.117-0.52-0.434-3.603-1.382-6.506l0.065-38.965z",
1227
- "M529.655 0c8.121 1.766 16.066 3.354 24.011 5.473 41.158 5.964 94.925 41.852 129.257 92.078 26.639 37.158 48.531 76.529 72.365 114.664 5.473 8.651 10.417 17.655 16.066 27.189 17.655-11.652 34.251-23.305 51.553-33.721-3.028 0.505 11.386-7.634 27.317-12.175 3.654-1.177 6.994-1.751 10.469-1.751 13.188 0 24.446 8.262 28.88 19.893 3.479 7.925 5.842 18.24 6.072 29.080 0.001 59.408 0.001 118.729 0.001 178.051-0.015 8.262-1.436 16.972-4.052 25.147-9.543 30.29-39.733 43.179-73.808 30.467-39.548-14.83-78.742-30.543-118.113-45.903-19.597-7.592-39.018-15.183-58.439-23.128-15.99-3.526-29.254-17.061-32.616-34.149-0.057-0.657-0.064-1.101-0.064-1.547 0-17.183 9.899-32.055 24.305-39.223 13.319-9.295 26.737-17.77 40.332-26.774 0.441 0.988-0.304-1.449-1.462-3.635-22.196-36.972-43.382-74.754-67.040-110.948 8.017 6.546-12.692-21.384-39.313-42.065-14.667-12.194-33.179-19.41-53.376-19.41s-38.71 7.216-53.099 19.211c25.271-24.464-12.142 5.895-40.479 43.481 19.652-25.731-1.942-1.266-17.598 26.949l-100.686-59.592c35.31-60.381 75.211-113.699 141.241-141.241-34.894 12.533 6.236-4.964 49.994-15.797l38.282-0.622z",
1228
- "M735.868 799.956c7.004 0.482 15.18 0.756 23.42 0.756 23.683 0 46.837-2.267 69.257-6.596 54.391-15.17 80.344-60.543 61.453-116.334 19.88 44.969-1.019-13.112-31.86-64.551-4.156-8.188-10.689-17.899-16.515-29.022l97.633-58.439c0.396-0.012 1.445 0.414 2.31 1.070 30.175 50.13 62.661 99.035 76.255 157.297 4.796 15.802 7.557 33.964 7.557 52.77 0 36.685-10.506 70.915-28.672 99.848-15.944 29.748-59.158 63.651-110.656 76.957-28.747 8.77-62.15 14.028-96.75 14.243-17.768 0.001-34.011 0.001-53.078 0.001 0 17.655 0 33.015 0 49.258-0.026 8.341-1.711 17.96-4.778 26.939-3.703 11.521-14.901 20.166-28.118 20.166-3.391 0-6.65-0.569-9.685-1.617 1.124 1.594-12.643-3.507-24.506-11.276q-79.804-51.514-159.605-103.774c-39.371-25.777-39.018-61.44 0-87.217l149.892-97.633c5.65-3.708 11.123-7.415 17.655-10.593 32.132-17.655 58.262-3.531 59.498 33.545-0.177 17.302-0.706 34.957-0.706 54.201z"
1229
- ],
1230
- "attrs": [],
1231
- "isMulticolor": false,
1232
- "grid": 0,
1233
- "tags": [
1234
- "recycle"
1235
- ],
1236
- "colorPermutations": {}
1237
- },
1238
- {
1239
- "id": 65,
1240
- "paths": [
1241
- "M783.177 485.669c-0.348 0.003-0.76 0.004-1.172 0.004-24.883 0-48.442-5.667-69.457-15.781-34.513-16.040-53.896-11.103-78.582 19.617-112.823 141.166-226.926 281.6-348.526 415.086q-38.766 42.24-79.36 82.834c-20.826 22.637-50.592 36.771-83.659 36.771-16.787 0-32.724-3.643-47.062-10.181-43.521-16.596-74.586-58.691-74.992-108.094-0.292-3.121-0.458-6.69-0.458-10.298 0-32.327 13.337-61.54 34.809-82.435 53.603-52.871 106.083-106.997 162.22-157.099 107.703-95.817 217.417-189.257 325.486-283.429 27.794-24.137 33.097-44.617 18.286-79.36-9.86-21.246-15.611-46.116-15.611-72.329 0-16.558 2.295-32.579 6.584-47.764 2.76-24.535 23.467-58.079 53.097-80.421-50.767 31.77 36.317-36.676 136.106-82.067 11.91-5.812 25.84-9.77 40.592-10.707 18.593-0.016 25.908 14.796 15.485 30.887 5.996-7.73-0.822 2.75-9.657 11.122-21.063 21.792-42.091 43.186-63.303 65.129-20.488 20.262-33.176 48.375-33.176 79.451s12.688 59.189 33.166 79.441c12.262 12.993 24.696 25.793 36.582 38.227 19.129 19.681 45.853 31.893 75.429 31.893s56.3-12.212 75.405-31.868c22.515-22.333 44.458-45.373 66.584-68.048 4.73-7.707 13.111-12.77 22.674-12.77 2.874 0 5.642 0.457 8.234 1.303 6.31 4.942 10.457 12.717 10.457 21.461 0 4.495-1.096 8.735-3.035 12.465 4.698-9.518-4.469 21.077-18.839 48.518-20.039 35.263-41.616 73.298-64.29 109.32-26.735 41.843-72.942 69.187-125.535 69.187-1.574 0-3.143-0.024-4.705-0.073z"
1242
- ],
1243
- "attrs": [],
1244
- "isMulticolor": false,
1245
- "width": 999,
1246
- "grid": 0,
1247
- "tags": [
1248
- "fix"
1249
- ],
1250
- "colorPermutations": {}
1251
- },
1252
- {
1253
- "id": 36,
1254
- "paths": [
1255
- "M380.8 547.2l96 96c6.4 6.4 17.6 6.4 24-4.8l315.2-313.6c6.4-1.6 6.4-12.8 0-19.2l-96-96c-6.4-6.4-17.6-6.4-24 0l-315.2 313.6c-6.4 6.4-6.4 17.6 0 24zM345.6 569.6l-3.2 3.2-1.6 3.2-46.4 136-1.6 3.2c-1.6 4.8 0 8 3.2 11.2s8 4.8 11.2 3.2l3.2-1.6 136-46.4 3.2-1.6 3.2-3.2c4.8-4.8 4.8-12.8 0-17.6l-91.2-91.2c-3.2-3.2-11.2-3.2-16 1.6zM916.8 172.8l-65.6-65.6c-14.4-14.4-40-14.4-54.4 0l-56 56c-6.4 6.4-6.4 17.6 0 24l96 96c6.4 6.4 17.6 6.4 24 0l56-56c14.4-14.4 14.4-40 0-54.4zM832 432c-24 0-48 24-48 48v361.6l-592 6.4v-608h352c24 0 48-24 48-48s-24-48-48-48h-400c-24 0-48 24-48 48v704c0 24 24 48 48 48h688c25.6 0 48-22.4 48-48 0-4.8 0-416 0-416 0-24-24-48-48-48z"
1256
- ],
1257
- "attrs": [],
1258
- "isMulticolor": false,
1259
- "tags": [
1260
- "edit"
1261
- ],
1262
- "defaultCode": 111,
1263
- "grid": 0,
1264
- "colorPermutations": {}
1265
- },
1266
- {
1267
- "id": 40,
1268
- "paths": [
1269
- "M224 512c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112zM624 512c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112zM1024 512c0 61.856-50.144 112-112 112s-112-50.144-112-112c0-61.856 50.144-112 112-112s112 50.144 112 112z"
1270
- ],
1271
- "attrs": [],
1272
- "isMulticolor": false,
1273
- "tags": [
1274
- "options"
1275
- ],
1276
- "defaultCode": 115,
1277
- "grid": 0,
1278
- "colorPermutations": {}
1279
- },
1280
- {
1281
- "id": 41,
1282
- "paths": [
1283
- "M740.8 512v0c0 25.6-4.8 51.2-12.8 75.2-3.2 9.6-6.4 17.6-11.2 25.6-11.2 22.4-25.6 43.2-43.2 60.8s-38.4 32-60.8 44.8c-8 4.8-17.6 8-25.6 11.2-24 8-48 12.8-75.2 12.8v0c-25.6 0-51.2-4.8-73.6-12.8-9.6-3.2-17.6-6.4-27.2-11.2-22.4-11.2-43.2-25.6-60.8-43.2s-33.6-38.4-44.8-60.8c-4.8-8-8-17.6-11.2-27.2-8-24-12.8-48-12.8-73.6s4.8-51.2 12.8-75.2c3.2-9.6 6.4-17.6 11.2-27.2 11.2-22.4 25.6-43.2 44.8-60.8 17.6-17.6 38.4-32 60.8-43.2 8-4.8 17.6-8 27.2-11.2 24-8 48-12.8 73.6-12.8v0c25.6 0 51.2 4.8 75.2 12.8 9.6 3.2 17.6 6.4 25.6 11.2 22.4 11.2 43.2 25.6 60.8 44.8 17.6 17.6 32 38.4 43.2 60.8 4.8 8 8 17.6 11.2 25.6 8 22.4 12.8 48 12.8 73.6v0 0zM958.4 470.4v0c-1.6-17.6-16-32-33.6-33.6h-20.8c-22.4 0-41.6-12.8-49.6-30.4-1.6-4.8-3.2-9.6-4.8-14.4-4.8-11.2-9.6-22.4-14.4-33.6v0c-3.2-3.2-4.8-8-6.4-12.8v0c-1.6-6.4-3.2-12.8-3.2-19.2 0-16 6.4-28.8 16-40v0l11.2-11.2c12.8-14.4 14.4-35.2 1.6-49.6v0c-8-11.2-17.6-20.8-27.2-30.4s-20.8-19.2-30.4-28.8v0c-12.8-11.2-32-11.2-44.8-1.6l-8 8-8 9.6c-16 16-40 20.8-60.8 12.8-3.2-1.6-4.8-3.2-8-3.2-12.8-6.4-25.6-11.2-40-16-3.2 0-4.8-1.6-6.4-1.6v0c-6.4-3.2-12.8-6.4-19.2-12.8-9.6-9.6-14.4-20.8-16-32 0-4.8 0-9.6 0-14.4v-12.8c0-17.6-12.8-33.6-30.4-36.8-1.6 0-4.8 0-6.4 0v0c-11.2-1.6-24-1.6-36.8-1.6s-25.6 0-36.8 1.6v0c-1.6 0-4.8 0-6.4 0-17.6 3.2-30.4 17.6-30.4 36.8v16c0 24-14.4 44.8-36.8 52.8-1.6 0-3.2 1.6-4.8 1.6-14.4 4.8-28.8 11.2-43.2 17.6v0c-1.6 0-1.6 1.6-3.2 1.6-6.4 3.2-14.4 4.8-24 4.8-16 0-28.8-6.4-40-16v0l-11.2-11.2c-12.8-12.8-33.6-14.4-48-4.8-1.6 1.6-3.2 3.2-4.8 4.8v0c-9.6 8-19.2 16-27.2 25.6-9.6 8-17.6 17.6-25.6 27.2v0c-1.6 1.6-3.2 3.2-4.8 4.8-9.6 14.4-8 35.2 4.8 48l11.2 11.2c17.6 17.6 20.8 41.6 11.2 62.4 0 1.6-1.6 3.2-1.6 3.2-6.4 14.4-12.8 28.8-17.6 43.2 0 1.6-1.6 3.2-1.6 4.8v0c-3.2 6.4-6.4 14.4-12.8 19.2-11.2 11.2-25.6 16-40 16v0h-16c-17.6 0-33.6 12.8-36.8 30.4 0 1.6 0 4.8 0 6.4-1.6 14.4-1.6 27.2-1.6 40v0 0c0 12.8 0 24 1.6 36.8v0c0 1.6 0 4.8 0 6.4 3.2 17.6 17.6 30.4 36.8 30.4v0h16c24 0 44.8 14.4 52.8 35.2v0c0 1.6 1.6 3.2 1.6 4.8v0c4.8 14.4 11.2 28.8 17.6 43.2v0c0 1.6 1.6 1.6 1.6 3.2 3.2 6.4 4.8 14.4 4.8 24 0 16-6.4 28.8-16 40v0l-11.2 11.2c-12.8 12.8-14.4 32-4.8 46.4 1.6 1.6 3.2 3.2 4.8 6.4 8 9.6 16 19.2 25.6 27.2 8 8 17.6 17.6 27.2 25.6 1.6 1.6 3.2 3.2 6.4 4.8 12.8 8 30.4 8 43.2-1.6l16-16c17.6-17.6 41.6-20.8 62.4-11.2 1.6 0 1.6 1.6 3.2 1.6v0c14.4 6.4 28.8 12.8 43.2 17.6 1.6 0 3.2 1.6 3.2 1.6 8 3.2 14.4 6.4 20.8 12.8 11.2 11.2 16 25.6 16 40v0 16c0 19.2 14.4 35.2 33.6 36.8v0c14.4 4.8 27.2 4.8 41.6 4.8s27.2 0 41.6-1.6v0c19.2-1.6 33.6-17.6 33.6-36.8v-16c0-22.4 12.8-41.6 32-51.2 3.2-1.6 8-3.2 12.8-4.8 12.8-4.8 24-9.6 35.2-14.4 3.2-1.6 6.4-4.8 11.2-4.8 6.4-1.6 12.8-3.2 19.2-3.2 14.4 0 27.2 4.8 36.8 14.4 1.6 1.6 3.2 3.2 4.8 4.8l9.6 9.6c12.8 12.8 33.6 14.4 48 3.2v0c1.6-1.6 1.6-1.6 3.2-3.2 9.6-8 19.2-17.6 28.8-25.6 9.6-9.6 17.6-19.2 25.6-28.8 1.6-1.6 1.6-3.2 3.2-3.2 9.6-14.4 9.6-33.6-3.2-46.4v0l-3.2-3.2-9.6-12.8c-16-16-20.8-41.6-11.2-62.4 1.6-1.6 1.6-3.2 3.2-6.4 6.4-12.8 12.8-27.2 17.6-41.6 0-1.6 1.6-3.2 1.6-6.4 3.2-6.4 6.4-12.8 12.8-19.2 11.2-11.2 25.6-16 40-16v0h16c19.2 0 36.8-16 36.8-35.2v0c1.6-11.2 1.6-24 1.6-36.8 0-14.4 0-27.2-1.6-41.6z"
1284
- ],
1285
- "attrs": [],
1286
- "isMulticolor": false,
1287
- "tags": [
1288
- "cog",
1289
- "gear"
1290
- ],
1291
- "defaultCode": 116,
1292
- "grid": 0,
1293
- "colorPermutations": {}
1294
- },
1295
- {
1296
- "id": 38,
1297
- "paths": [
1298
- "M683.2 683.2l-163.2-113.6-163.2 113.6 65.6-179.2-131.2-97.6h163.2l65.6-179.2 65.6 179.2h163.2l-131.2 97.6 65.6 179.2zM912 585.6c0-65.6-19.2-97.6-32-131.2-12.8-35.2-24-64-32-81.6-28.8-65.6 0-131.2 16-147.2s32-32 49.6-49.6c-19.2-20.8-62.4-59.2-81.6-81.6-33.6 16-81.6 32-147.2 32s-132.8-33.6-163.2-65.6c-33.6 35.2-116.8 67.2-180.8 67.2-67.2 0-99.2-14.4-131.2-32-17.6 17.6-54.4 54.4-81.6 81.6 12.8 12.8 30.4 30.4 49.6 49.6 16 16 44.8 97.6 16 147.2-9.6 16-32 51.2-49.6 81.6-16 32-32 65.6-32 131.2s32 168 97.6 212.8c49.6 32 131.2 32 179.2 49.6 49.6 16 113.6 81.6 131.2 113.6 16-32 83.2-97.6 131.2-113.6 49.6-17.6 131.2-16 179.2-49.6 70.4-49.6 81.6-148.8 81.6-214.4z"
1299
- ],
1300
- "attrs": [],
1301
- "isMulticolor": false,
1302
- "tags": [
1303
- "badge"
1304
- ],
1305
- "defaultCode": 113,
1306
- "grid": 0,
1307
- "colorPermutations": {}
1308
- },
1309
- {
1310
- "id": 42,
1311
- "paths": [
1312
- "M512 608c-212.8 0-390.4-78.4-416-160 0 20.8 0 108.8 0 108.8 0 92.8 185.6 163.2 416 163.2s416-70.4 416-163.2c0 0 0-91.2 0-108.8-25.6 81.6-203.2 160-416 160zM512 832c-212.8 0-390.4-78.4-416-160 0 27.2 0 105.6 0 105.6 0 92.8 185.6 166.4 416 166.4s416-73.6 416-166.4c0 0 0-94.4 0-105.6-25.6 81.6-203.2 160-416 160zM512 96c-230.4 0-416 73.6-416 160v80c0 91.2 185.6 160 416 160s416-68.8 416-160v-80c0-86.4-185.6-160-416-160z"
1313
- ],
1314
- "attrs": [],
1315
- "isMulticolor": false,
1316
- "tags": [
1317
- "cylinder"
1318
- ],
1319
- "defaultCode": 117,
1320
- "grid": 0,
1321
- "colorPermutations": {}
1322
- },
1323
- {
1324
- "id": 44,
1325
- "paths": [
1326
- "M716.8 564.8c112-75.2 259.2-168 259.2-388.8 0-32-27.2-48-48-48h-160c-25.6-48-105.6-96-256-96s-230.4 48-256 96h-160c-20.8 0-48 16-48 48 0 220.8 134.4 310.4 248 385.6 92.8 60.8 152 102.4 152 176v62.4c-81.6 8-160 54.4-160 96 0 51.2 100.8 96 224 96s224-44.8 224-96c0-41.6-81.6-86.4-160-96v-64c0-75.2 48-110.4 140.8-171.2zM784 208h112c-12.8 128-86.4 195.2-176 256 28.8-62.4 60.8-144 64-256zM128 208h112c3.2 112 35.2 193.6 64 256-89.6-60.8-163.2-128-176-256zM320 192c0-20.8 51.2-80 192-80s192 59.2 192 80-51.2 80-192 80-192-59.2-192-80z"
1327
- ],
1328
- "attrs": [],
1329
- "isMulticolor": false,
1330
- "tags": [
1331
- "trophy"
1332
- ],
1333
- "defaultCode": 120,
1334
- "grid": 0,
1335
- "colorPermutations": {}
1336
- },
1337
- {
1338
- "id": 43,
1339
- "paths": [
1340
- "M512 96c-307.2 0-179.2 387.2-336 544 0 0 587.2 0 672 0-148.8-148.8-30.4-544-336-544zM864 688h-704c-35.2 0-64 28.8-64 64s28.8 64 64 64h240c0 62.4 49.6 112 112 112s112-49.6 112-112h240c35.2 0 64-28.8 64-64s-28.8-64-64-64z"
1341
- ],
1342
- "attrs": [],
1343
- "isMulticolor": false,
1344
- "tags": [
1345
- "bell"
1346
- ],
1347
- "defaultCode": 119,
1348
- "grid": 0,
1349
- "colorPermutations": {}
1350
- }
1351
- ],
1352
- "invisible": false,
1353
- "colorThemes": [],
1354
- "colorThemeIdx": 0
1355
- }
1356
- ],
1357
- "uid": -1,
1358
- "preferences": {
1359
- "showGlyphs": true,
1360
- "showQuickUse": false,
1361
- "showQuickUse2": true,
1362
- "showSVGs": true,
1363
- "fontPref": {
1364
- "prefix": "dev-icon-",
1365
- "metadata": {
1366
- "fontFamily": "WPMU-DEV-App-Icons",
1367
- "majorVersion": 2,
1368
- "minorVersion": 0
1369
- },
1370
- "metrics": {
1371
- "emSize": 1024,
1372
- "baseline": 6.25,
1373
- "whitespace": 50
1374
- },
1375
- "embed": false,
1376
- "includeMetadata": false,
1377
- "showSelector": false,
1378
- "showMetrics": false,
1379
- "showMetadata": false,
1380
- "showVersion": true
1381
- },
1382
- "imagePref": {
1383
- "prefix": "icon-",
1384
- "png": true,
1385
- "useClassSelector": true,
1386
- "color": 4473924,
1387
- "bgColor": 16777215,
1388
- "classSelector": ".icon"
1389
- },
1390
- "historySize": 100,
1391
- "showCodes": true,
1392
- "gridSize": 16,
1393
- "showGrid": false,
1394
- "showLiga": false
1395
- }
1396
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/font/WPMU-DEV-App-Icons.eot DELETED
Binary file
includes/admin/shared-ui/font/WPMU-DEV-App-Icons.svg DELETED
@@ -1,70 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Generated by IcoMoon</metadata>
5
- <defs>
6
- <font id="WPMU-DEV-App-Icons" horiz-adv-x="1024">
7
- <font-face units-per-em="1024" ascent="960" descent="-64" />
8
- <missing-glyph horiz-adv-x="1024" />
9
- <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
- <glyph unicode="&#x30;" glyph-name="logo_alt" d="M514 960c-284 0-514-230-514-514s230-514 514-514c284 0 514 230 514 514s-230 514-514 514zM514 10c-242 0-436 196-436 436 0 242 194 436 436 436 240 0 436-194 436-436 0-240-196-436-436-436zM774 732l-60-48v-322c0-20-14-34-30-34-18 0-32 14-32 34v172c0 56-40 100-90 100s-90-44-90-100v-172c0-20-14-34-30-34s-30 14-30 34v172c0 56-40 100-90 100s-90-44-90-100v0-370l58 46v324c0 18 14 34 32 34 16 0 30-16 30-34v-172c0-56 40-102 90-102s90 46 90 102v0 172c0 18 14 34 30 34 18 0 32-16 32-34v-172c0-56 40-102 90-102s90 46 90 102v0 370z" />
11
- <glyph unicode="&#x31;" glyph-name="devman" d="M798 492c18 10 32 30 32 52 0 32-26 58-58 58-34 120-62 230-62 230s-34 128-198 128c-164 0-198-128-198-128s-28-110-62-230c-32 0-58-26-58-58 0-22 14-42 32-52-32-118-62-224-62-224 0-10 22-22 56-28 10 40 22 98 36 146 22 76 58 120 120 142-36 12-54 58-62 110l124-66 78 74 14-198h-110c0 0 70-36 146-36 8 6 4 84 0 182l22-26 126 66c-8-48-26-94-64-106 64-26 104-70 122-142 10-48 26-106 36-146 34 6 56 18 56 28-4 0-34 106-66 224zM420 656l-90 74 150-16zM604 656l-62 58 150 16zM798 232c0 0-148-66-216-66-70 0-66 58-66 66h-8c-4-8 4-66-66-66-68 0-216 66-216 66l-44-182 330-114 332 114zM458 338h108v-36h-108z" />
12
- <glyph unicode="&#x32;" glyph-name="fix" horiz-adv-x="999" d="M783.177 474.331c-0.348-0.003-0.76-0.004-1.172-0.004-24.883 0-48.442 5.667-69.457 15.781-34.513 16.040-53.896 11.103-78.582-19.617-112.823-141.166-226.926-281.6-348.526-415.086q-38.766-42.24-79.36-82.834c-20.826-22.637-50.592-36.771-83.659-36.771-16.787 0-32.724 3.643-47.062 10.181-43.521 16.596-74.586 58.691-74.992 108.094-0.292 3.121-0.458 6.69-0.458 10.298 0 32.327 13.337 61.54 34.809 82.435 53.603 52.871 106.083 106.997 162.22 157.099 107.703 95.817 217.417 189.257 325.486 283.429 27.794 24.137 33.097 44.617 18.286 79.36-9.86 21.246-15.611 46.116-15.611 72.329 0 16.558 2.295 32.579 6.584 47.764 2.76 24.535 23.467 58.079 53.097 80.421-50.767-31.77 36.317 36.676 136.106 82.067 11.91 5.812 25.84 9.77 40.592 10.707 18.593 0.016 25.908-14.796 15.485-30.887 5.996 7.73-0.822-2.75-9.657-11.122-21.063-21.792-42.091-43.186-63.303-65.129-20.488-20.262-33.176-48.375-33.176-79.451s12.688-59.189 33.166-79.441c12.262-12.993 24.696-25.793 36.582-38.227 19.129-19.681 45.853-31.893 75.429-31.893s56.3 12.212 75.405 31.868c22.515 22.333 44.458 45.373 66.584 68.048 4.73 7.707 13.111 12.77 22.674 12.77 2.874 0 5.642-0.457 8.234-1.303 6.31-4.942 10.457-12.717 10.457-21.461 0-4.495-1.096-8.735-3.035-12.465 4.698 9.518-4.469-21.077-18.839-48.518-20.039-35.263-41.616-73.298-64.29-109.32-26.735-41.843-72.942-69.187-125.535-69.187-1.574 0-3.143 0.024-4.705 0.073z" />
13
- <glyph unicode="&#x33;" glyph-name="caret_right" d="M451.2 180.8l204.8 204.8c14.4 14.4 32 32 32 62.4s-17.6 49.6-32 62.4l-204.8 204.8c-27.2 27.2-67.2 27.2-94.4 0s-27.2-67.2 0-94.4l172.8-172.8-172.8-172.8c-27.2-27.2-27.2-67.2 0-94.4s67.2-27.2 94.4 0z" />
14
- <glyph unicode="&#x37;" glyph-name="upfront" d="M810 604l-18 234-122 82-112 12-180-166 228-24zM16 380l176-86 26 322-198-182zM1012 380l-496-244 210-104 302 148zM984 706l-192 132 42-546 178 88zM316 960l-274-254-22-272 538 498zM0 180l514-248 212 100-710 348z" />
15
- <glyph unicode="&#x39;" glyph-name="logo" d="M1004 290v670l-108-84v-586c0-34-24-62-54-62-32 0-56 28-56 62v312c0 100-74 182-164 182s-162-82-162-182v-312c0-34-26-62-56-62s-54 28-54 62v312c0 100-74 182-164 182s-164-82-164-182v0-670l108 84v586c0 34 26 62 56 62s56-28 56-62l-2-312c0-100 74-182 164-182s164 82 164 182v0 312c0 34 24 62 54 62 32 0 56-28 56-62v-312c0-100 72-182 164-182 90 0 162 82 162 182z" />
16
- <glyph unicode="&#x3d;" glyph-name="speach_alt" d="M558 182c-42-14-86-22-134-22-26 0-50 2-76 8-22-20-74-52-150-58-2-2-2-2-4-2-6 0-14 4-4 8 22 14 62 40 62 80-120 52-202 156-202 276 0 174 168 314 374 314 156 0 290-80 346-194 22-2 42-8 60-14-52 148-214 258-406 258-234 0-424-164-424-364 0-120 70-232 186-298-6-6-14-10-22-14-28-16-32-42-28-60 6-20 24-42 58-42 2 0 6 2 8 2 74 6 128 32 160 54 20-2 42-4 62-4 70 0 134 16 192 40-22 8-42 18-58 32zM732 570c138 0 248-94 248-208 0-82-54-152-134-186 10-28 40-50 58-60 10-4 2-8-4-8-2 0-2 0-4 2-62 4-108 26-134 46-10-2-20-2-30-2-138 0-250 92-250 208 0 114 112 208 250 208zM732 620c-166 0-300-116-300-258s134-258 300-258c4 0 10 0 18 0 32-20 80-40 142-44 2 0 4-2 8-2 34 0 52 22 58 42 4 18 0 44-30 60-2 2-2 2-4 4 66 48 106 120 106 198 0 142-134 258-298 258z" />
17
- <glyph unicode="&#x41;" glyph-name="comment" horiz-adv-x="1048" d="M0 769.427c0.213 105.296 85.621 190.573 190.947 190.573 0.066 0 0.132 0 0.198 0h666.058c0.056 0 0.122 0 0.188 0 105.325 0 190.734-85.277 190.947-190.552v-492.364c0-105.354-85.406-190.76-190.76-190.76h-38.938l-60.279-149.762-146.018 149.762h-421.955c-105.17 0.107-190.385 85.388-190.385 190.572 0 0.066 0 0.132 0 0.198v492.333z" />
18
- <glyph unicode="&#x42;" glyph-name="download" horiz-adv-x="1365" d="M1050.836-64h-749.992c-0.424-0.002-0.925-0.003-1.426-0.003-15.013 0-29.805 0.942-44.322 2.77-117.762 14.242-218.304 105.483-247.147 224.715-3.005 14.041-5.359 25.576-7.949 36.169v69.208c-0.121-0.517 1.417 1.772 2.319 4.359 11.525 110.342 91.606 206.428 199.228 241.984 7.938 1.803 12.284 6.922 12.284 13.057 0 1.006-0.117 1.986-0.338 2.925 0.011 0.63 0.007 1.476 0.007 2.323 0 163.941 132.901 296.842 296.842 296.842 20.495 0 40.506-2.077 59.832-6.032-0.203-0.254 1.768-0.59 3.817-0.59 6.46 0 12.14 3.336 15.413 8.378 26.059 43.611 96.992 96.055 180.393 117.272-11.657-2.522 15.599 5.389 44.039 9.689 10.816 1.059 21.262 1.533 31.817 1.533 18.246 0 36.161-1.416 53.642-4.144 69.441-4.088 148.797-45.322 204.691-107.946 55.785-58.363 89.947-137.21 89.947-224.035 0-13.662-0.846-27.126-2.488-40.343-0.163 0.309-0.348-1.151-0.348-2.653 0-6.791 3.784-12.699 9.359-15.729 68.861-34.597 134.23-117.504 155.763-216.754-1.424 7.797 3.362-11.618 5.916-31.73 1.696-13.937 2.586-28.537 2.586-43.344s-0.889-29.407-2.618-43.748c-15.395-134.38-118.284-249.368-253.362-283.546-10.044-3.904-33.128-8.976-57.16-10.586zM780.359 642.207h-146.42c-12.397-1.14-22.314-11.010-23.532-23.433l-0.009-194.314c-0.974-12.508-10.94-22.506-23.448-23.534l-99.432-0.006c-14.36 0-48.493 0 0-48.728l195.149-196.326c6.226-6.256 14.843-10.128 24.364-10.128s18.139 3.872 24.363 10.127l195.15 194.914c49.199 49.199 11.535 48.728 0 48.728h-97.692c-13.001 0-23.54 10.539-23.54 23.54v195.384c-0.63 13.496-11.616 24.24-25.165 24.482z" />
19
- <glyph unicode="&#x43;" glyph-name="pos_header" d="M0 511.81c0-35.241 28.456-63.81 64.056-63.81h895.888c35.377 0 64.056 28.994 64.056 63.81v384.38c0 35.241-28.456 63.81-64.056 63.81h-895.888c-35.377 0-64.056-28.994-64.056-63.81v-384.38zM0 224c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 96c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0-32c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 352c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32z" />
20
- <glyph unicode="&#x44;" glyph-name="defender" horiz-adv-x="931" d="M836.149 613.429c7.483 36.21-2.216-28.877-18.984-91.063 12.733 9.516-27.719-112.534-90.884-219.586 21.638 1.365-83.817-143.882-221.683-248.702l-22.964-17.090c-4.412-2.891-9.818-4.611-15.625-4.611s-11.213 1.72-15.735 4.679l-2.538 0.815-19.421 14.654c-2.618-20.020-135.11 100.592-223.789 250.229-6.611 11.597-11.025 19.365-15.262 27.134 60.454-104.853 3.792-19.941-35.933 73.884-43.388 102.226-67.491 215.092-67.526 333.584 0 1.073 0 2.132 0 3.015 0 8.828 0 17.655 0 26.306-0.023 0.422-0.037 0.916-0.037 1.412s0.013 0.991 0.040 1.481c-0.066 0.646-0.102 1.476-0.102 2.315s0.036 1.67 0.106 2.49c0.831 7.653 6.206 15.435 13.802 19.771-1.342-0.6 1.387 0.991 4.392 1.97l0.16 0.045c8.651 3.884 17.655 7.768 25.953 11.299-68.26-26.429 17.317 13.015 109.005 37.494 71.809 19.158 147.446 29.39 225.473 29.39s153.664-10.232 225.643-29.427c-63.3 19.62 30.059-3.042 116.233-39.39q8.491-3.717 22.439-10.249c9.004-4.137 15.58-13.234 16.239-23.931l0.004-0.081c0-10.063 0-20.127 0-30.19 0-1.059 0-2.119 0-3.178 0.001-0.449 0.001-0.98 0.001-1.511 0-43.386-3.274-86.007-9.588-127.63zM732.866 515.266h-2.648l-5.297-0.883c14.98 20.528-234.445-43.985-461.092-149.267l12.474 5.2-3.178-1.412-6.532-3.001c-12.357-7.588-20.477-21.030-20.48-36.369-0.008-0.316-0.013-0.688-0.013-1.061 0-8.020 2.237-15.517 6.122-21.901l-0.105 0.187c-28.723 16.918 67.487-115.537 192.366-212.951l5.196-4.031c-2.892 1.681 0.951-0.982 5.257-2.746 3.281-1.292 6.831-1.996 10.545-1.996s7.264 0.704 10.524 1.985c-2.767-1.345 1.597 0.349 5.4 2.832l3.232 2.573c-2.954-22.686 121.104 90.887 204.65 231.368-27.53-56.203 30.813 39.564 67.65 145.403 1.709 7.759 3.121 9.701 3.827 11.82v0c0.086 0.873 0.135 1.887 0.135 2.913s-0.049 2.040-0.144 3.041c-0.085 15.408-12.554 28.001-28.034 28.297zM787.597 764.028c1.65-0.612-4.461 4.267-11.547 7.308 69.21-26.78-10.842 9.765-96.458 32.707-68.289 18.189-140.156 27.892-214.29 27.892s-146.001-9.703-214.401-27.908c65.558 19.796-21.197-1.107-101.41-34.56 6.226 3.164-1.027-0.568-6.877-5.828-2.485-1.051-8.402-8.523-11.519-17.32-1.364-3.399-2.395-8.149-2.562-13.118l-0.002-2.718c0.178-93.262 18.101-188.172 50.737-275.925l0.639-1.085c4.879-9.2 14.396-15.36 25.352-15.36 0.025 0 0.050 0 0.076 0 2.876 0.001 5.68 0.453 8.313 1.289l7.22 3.301 15.007 5.297c12.421 23.546 252.262 113.836 508.637 154.443l11.131 1.453 7.062 0.883c16.607 3.504 30.083 17.498 32.981 35.059l0.034 2.37c2.806 17.151 5.717 52.069 6.346 87.545l0.010 0.731v3.531c-0.301 11.393-5.827 22.388-14.431 29.973zM928.839 804.988v0 3.884c-1.45 19.185-13.611 37.652-31.129 48.035l-8.595 3.871c-123.554 62.554-269.36 99.192-423.724 99.192s-300.171-36.639-429.198-101.694l-0.706-0.5c-17.981-9.809-31.053-29.183-32.476-51.721l-0.009-0.185c-2.295-22.422-3.001-45.55-3.001-68.502 0-0.347-0.001-0.758-0.001-1.168 0-132.824 27.602-259.201 77.382-373.708q15.309-34.37 35.789-72.859c0.214-48.775 134.179-221.365 308.837-337.68l13.546-8.714c8.615-4.561 18.832-7.239 29.674-7.239 0.057 0 0.115 0 0.172 0 0.27-0.004 0.6-0.007 0.93-0.007 10.76 0 20.893 2.681 29.769 7.412l9.545 6.19c170.176 91.26 341.8 313.48 402.374 578.038q10.227 46.955 15.7 88.974c4.833 36.003 7.592 77.623 7.592 119.887 0 0.245 0 0.491 0 0.736q-0.353 34.213-2.825 67.758z" />
21
- <glyph unicode="&#x45;" glyph-name="error" horiz-adv-x="1142" d="M1133.686 32.886l-507.668 894.818c-10.931 19.443-31.427 32.362-54.942 32.362s-44.011-12.919-54.779-32.047l-507.831-895.133c-5.349-9.287-8.504-20.423-8.504-32.295s3.155-23.008 8.673-32.615c10.799-19.015 31.273-31.902 54.762-31.976h1015.346c23.439 0.050 43.924 12.919 54.778 31.984 5.512 9.599 8.667 20.734 8.667 32.607s-3.155 23.008-8.673 32.615zM571.077 60.455c-47.431 2.299-85.016 41.314-85.016 89.108s37.585 86.808 84.811 89.1c47.636-2.291 85.221-41.306 85.221-89.1s-37.585-86.808-84.811-89.1zM640.985 353.477c-1.182-27.372-31.311-48.443-71.089-48.443s-67.545 21.071-68.726 48.443c-6.105 98.462-19.692 275.692-19.692 294.006 0 36.037 39.385 64.197 90.388 64.197s86.843-28.16 86.843-64.197c0.591-17.526-11.422-196.135-17.526-293.809z" />
22
- <glyph unicode="&#x46;" glyph-name="facebook" horiz-adv-x="495" d="M109.909-64v512h-109.909v176.469h109.739v105.984c0.171 144.213 62.123 229.547 238.251 229.547h146.603v-176.469h-91.648c-68.267 0-73.216-24.747-73.216-70.656v-88.235h166.059l-19.627-176.64h-146.603v-512h-219.648z" />
23
- <glyph unicode="&#x47;" glyph-name="wordpress" d="M510.72-64c-282.192 0.764-510.657 229.701-510.657 511.998 0 282.77 229.23 512 512 512s512-229.23 512-512c0-2.828-0.023-5.651-0.069-8.469-3.807-278.716-230.984-503.536-510.67-503.536-0.916 0-1.831 0.002-2.746 0.007zM801.829 773.669c-192 178.103-514.011 136.594-652.069-83.383 1.457-0.351 5.118-0.794 8.862-0.912l128.098 4.569c1.526 0.428 3.279 0.673 5.089 0.673 9.947 0 18.161-7.423 19.403-17.033 0.021-0.347 0.027-0.638 0.027-0.931 0-11.21-9.087-20.297-20.297-20.297-0.714 0-1.42 0.037-2.116 0.109-13.81-1.653-27.89-2.75-43.616-4.213l157.074-469.76c2.56 6.766 4.023 10.606 5.303 14.629 28.343 85.029 56.686 170.24 85.211 256 1.679 4.231 2.652 9.133 2.652 14.263s-0.973 10.032-2.745 14.532c-18.192 48.005-36.478 96.097-52.752 144.919-6.583 19.749-14.811 31.451-36.571 28.526-0.546-0.016-1.189-0.025-1.834-0.025-5.843 0-11.513 0.743-16.92 2.139-8.938 0.769-16.246 8.623-16.246 18.183 0 10.14 8.22 18.36 18.36 18.36 0.579 0 1.153-0.027 1.718-0.079 14.007 0.005 28.27-1.457 42.35-2.555 22.64-1.451 49.092-2.278 75.736-2.278 38.096 0 75.797 1.69 113.032 5-3.065 0.267-1.049 0.621 1.050 0.621 9.86 0 17.897-7.804 18.272-17.572 0.040-0.495 0.062-1.031 0.062-1.572 0-10.705-8.678-19.383-19.383-19.383-0.601 0-1.195 0.027-1.782 0.081-14.37-1.651-28.816-2.931-44.542-4.577l156.16-464.457c-2.265-4.5 0.24-0.213 1.921 4.467 22.399 75.076 45.439 149.864 66.833 224.836 5.267 17.232 8.3 37.039 8.3 57.555 0 37.519-10.143 72.669-27.837 102.857-7.891 14.4-17.765 28.845-25.994 44.571 3.982-11.641-12.885 20.218-22.608 55.057-1.764 7.159-2.529 13.298-2.529 19.616 0 39.446 29.81 71.93 68.131 76.153-2.341-0.849 2.341 0.302 6.655 2.147zM655.726 36.023l-134.766 367.177h-2.926l-128.914-374.674c36.697-11.121 78.871-17.524 122.541-17.524 51.481 0 100.884 8.898 146.754 25.239zM318.72 56.686l-206.629 566.857c-23.247-51.636-36.791-111.934-36.791-175.395 0-170.748 98.044-318.596 240.906-390.319zM899.291 649.143c0-6.217 0-9.143 0-12.069 0.474-7.029 0.745-15.236 0.745-23.506 0-43.384-7.439-85.030-21.111-123.733q-54.057-156.852-108.914-316.12l-34.743-100.571c197.303 111.726 272.823 371.383 164.571 575.817z" />
24
- <glyph unicode="&#x48;" glyph-name="hummingbird" d="M757.583 604.072c11.477 11.477 18.575 27.331 18.575 44.844 0 35.025-28.394 63.419-63.419 63.419-17.513 0-33.368-7.098-44.844-18.575-10.923-11.137-17.664-26.409-17.664-43.255 0-0.372 0.003-0.744 0.010-1.115-0.009-0.316-0.013-0.754-0.013-1.193 0-34.42 27.903-62.323 62.323-62.323 0.439 0 0.877 0.005 1.314 0.014-0.064-0.001-0.062-0.001-0.061-0.001 17.106 0 32.589 6.951 43.778 18.183zM623.051 559.228c-22.791 22.051-36.94 52.915-36.94 87.082 0 1.103 0.015 2.202 0.044 3.297-0.060 1.246-0.092 2.898-0.092 4.558 0 69.717 56.517 126.234 126.234 126.234s126.234-56.517 126.234-126.234c0-1.66-0.032-3.312-0.096-4.957 0.068-1.193 0.102-2.87 0.102-4.555 0-33.365-13.531-63.569-35.405-85.426-22.405-21.845-53.059-35.319-86.861-35.319-0.498 0-0.995 0.003-1.491 0.009-1.977-0.127-4.375-0.198-6.791-0.198-33.231 0-63.289 13.581-84.928 35.496zM784.772 183.172c0 0.098 0 0.214 0 0.33 0 28.728-2.182 56.946-6.39 84.498q-6.674 51.469 6.39 64.711c-104.163-104.549 12.74-3.697 101.875 118.677-55.039-80.477 21.701 15.244 74.999 124.498-5.498-21.297 27.966 51.503 46.666 130.027 10.199 43.067 15.641 88.167 15.687 134.53q0 74.712-23.834 97.664t-95.868 21.892c-46.070-0.004-91.085-5.603-134.153-16.159 28.939 12.216-54.196-10.331-129.672-46.343 77.853 41.806-31.522-6.241-125.255-74.477 118.509 87.564-12.674 5.057-119.168-102.027q-12.226-12.226-68.722-6.047t-80.154 6.003c-3.046 0.29-6.585 0.455-10.163 0.455-25.805 0-49.602-8.597-68.684-23.082q-27.084-23.276-41.384-37.224c27.28 35.625-31.619-25.214-72.705-97.5q-36.581-63.162-46.115-81.877c-4.572-7.318-7.283-16.205-7.283-25.726 0-13.972 5.838-26.58 15.208-35.519 10.411-14.901 29.204-26.422 50.759-28.422l107.274-0.021q54.731 0 72.386 0c0.62-55.862 25.696-107.667 65.339-143.745 34.953-38.736 86.445-64.019 143.857-65.113q1.077-17.658 0.194-72.389t0-106.99c0.871-20.401 11.99-40.168 28.77-52.832 8.854-9.49 21.208-15.327 34.926-15.327 9.675 0 18.672 2.904 26.166 7.888l78.745 45.441c-29.723-23.258 42.571 18.267 100.585 74.45q13.821 13.826 37.302 41.014c14.292 18.785 22.897 42.572 22.897 68.369 0 3.652-0.172 7.264-0.51 10.828zM378.703 145.743q-50.494 0-111.228 60.734t-60.734 111.228q0.883 27.012-17.655 28.072c-0.688 0.041-1.493 0.064-2.303 0.064-11.959 0-22.741-5.038-30.339-13.107l-105.951-105.952c-7.15-6.829-11.595-16.437-11.595-27.084 0-1.655 0.107-3.285 0.316-4.884q1.922-18.526 28.052-20.292h69.208q-10.593-26.659-24.541-58.968t-27.189-60.557c-3.134-4.806-4.999-10.688-4.999-17.006 0-6.87 2.204-13.225 5.945-18.397 4.631-3.246 10.481-5.244 16.797-5.244s12.166 1.998 16.951 5.397q24.274 11.062 61.526 26.951l59.851 25.247q0-13.065 0-27.542t0-41.49c-0.233-1.233-0.367-2.652-0.367-4.102 0-11.657 8.624-21.3 19.841-22.896 2.129-0.405 4.435-0.628 6.794-0.628 10.166 0 19.363 4.151 25.988 10.851l104.875 104.875c6.815 8.468 10.939 19.352 10.939 31.2 0 1.447-0.061 2.879-0.182 4.295q-1.4 19.060-29.471 19.060z" />
25
- <glyph unicode="&#x49;" glyph-name="twitter" horiz-adv-x="1311" d="M1310.792 838.865c-14.89-10.709-81.418-32.19-151.988-40.433 39.699 16.967 91.224 72.488 115.047 140.977-5.215-8.61-82.434-44.54-166.562-61.314-53.177 49.795-122.171 81.005-198.455 81.005-0.51 0-1.019-0.001-1.529-0.004-1.417 0.031-3.181 0.048-4.948 0.048-143.894 0-260.897-115.137-263.907-258.31-0.005-0.394-0.005-0.528-0.005-0.663 0-20.801 2.555-41.005 7.367-60.315-213.432 6.91-416.518 110.697-554.535 271.859-23.725-35.825-37.265-80.55-37.265-128.437 0-0.162 0-0.324 0-0.486 0.318-89.914 47.503-169.25 118.519-214.509-40.056-0.282-83.88 11.67-122.242 32.426s1.463-2.758 1.463-3.888c1.807-126.237 93.452-231.003 213.999-253.1-19.642-6.049-44.035-9.384-69.208-9.384-17.872 0-35.351 1.681-52.289 4.894 39.032-104.987 137.304-178.977 252.959-179.717-91.27-69.137-206.805-110.743-332.057-110.743-0.661 0-1.321 0.001-1.981 0.003-21.669 0.002-43.945 1.315-65.843 3.869 119.49-73.177 261.363-116.418 413.335-116.418 0.546 0 1.091 0.001 1.636 0.002 494.626 0 765.147 393.916 765.147 735.4q0 16.724 0 33.448c-10.131-19.157 72.941 47.501 132.196 132.070z" />
26
- <glyph unicode="&#x4a;" glyph-name="github" horiz-adv-x="1058" d="M692.495 215.53c63.126 15.876 116.235 46.872 145.341 107.73 18.195 36.716 28.841 79.951 28.841 125.673 0 26.693-3.629 52.539-10.419 77.070 1.36 8.143-14.763 42.914-38.675 70.812-2.053 2.82-3.417 6.692-3.417 10.883 0 1.408 0.154 2.78 0.446 4.1 4.58 15.767 7.227 34.023 7.227 52.897 0 24.881-4.601 48.687-12.998 70.614-0.751 4.264-5.676 8.414-11.569 8.414-0.625 0-1.24-0.047-1.84-0.137-22.795-0.222-48.918-7.221-71.926-19.338-17.97-8.815-36.87-20.344-55.77-30.361-3.497-1.961-7.675-3.117-12.123-3.117-1.324 0-2.625 0.102-3.894 0.3-37.228 9.592-80.127 15.108-124.315 15.108s-87.087-5.516-128.047-15.898c2.499 0.603 1.24 0.507-0.042 0.507-4.959 0-9.583 1.436-13.479 3.916-6.299 9.525-54.471 35.184-107.814 47.174l-8.319 1.338c-18.9 2.079-20.412 1.701-26.46-17.577-6.368-18.236-10.046-39.259-10.046-61.14 0-19.234 2.842-37.804 8.129-55.314-0.014 0.17 0.18-1.189 0.18-2.593 0-3.031-0.903-5.852-2.455-8.206-47.593-55.132-56.665-119.959-46.081-188.944-2.207-0.821 5.952-38.105 19.692-72.558 26.046-66.924 81.045-103.59 150.408-121.545 21.357-5.481 43.281-8.883 66.339-13.608-12.638-11.215-26.514-36.191-31.088-64.29-1.070-3.438-4.041-6.294-7.755-7.504-56.791-21.761-111.412-12.122-145.999 45.145-10.683 23.925-37.497 46.215-69.98 53.542-4.020 0.649-7.843 0.943-11.734 0.943-5.736 0-11.323-0.639-16.694-1.849-7.811-1.416-9.134-7.842-3.842-14.079-2.725 1.877 4.644-6.466 13.756-12.335 19.054-7.885 45.767-36.705 59.057-72.092 17.056-43.824 58.023-73.933 106.097-74.521 4.852-0.123 10.481-0.193 16.125-0.193 20.964 0 41.704 0.962 62.177 2.844-2.629-32.514-2.629-66.534-2.629-100.365 0-17.199-18.9-25.137-39.123-18.9 7.828-9.482-65.118 19.649-127.215 63.198-158.175 112.005-238.689 266.229-230.562 461.276 11.099 242.804 190.67 443.514 425.429 487.122 34.55 7.142 70.546 10.946 107.43 10.946 289.868 0 524.852-234.984 524.852-524.852 0-229.409-147.183-424.441-352.272-495.818-29.388-9.621-44.886 1.152-44.886 27.99q0 65.961 0 132.3c0.271 3.25 0.426 7.035 0.426 10.856 0 35.003-12.981 66.973-34.392 91.36 23.382 4.379 44.928 7.781 65.907 13.073z" />
27
- <glyph unicode="&#x4b;" glyph-name="stackoverflow" horiz-adv-x="807" d="M750.421 580.096l-232.448 328.704 69.973 51.2c6.315-7.68 12.629-14.336 17.067-21.675 64.171-95.573 127.488-191.488 192.341-286.379 12.288-17.92 14.165-29.696-6.315-41.643 76.886 48.048 12.89 14.204-41.447-30.876zM734.72 562.176l-52.736-59.221-304.299 277.163 60.075 64.171zM270.677 614.912l34.133 63.317c9.899 17.067 21.333 6.656 31.403 0.853q140.459-80.555 280.576-161.621c59.051-34.133 59.904-41.813 11.776-97.792zM620.203 389.803c-2.56-10.581-3.072-13.312-3.925-16.213-17.067-60.587-5.461-54.784-64.683-38.059-106.667 30.208-213.333 61.269-320.341 90.112-25.088 6.827-29.525 17.067-20.992 40.448 25.429 70.656 11.947 59.221 74.923 39.765 103.253-31.744 205.995-65.365 308.736-99.157-5.62 4.303 11.983-4.578 26.432-17.021zM595.285 268.288c-1.877-49.323-2.731-51.2-48.469-46.421-117.077 11.264-233.984 23.381-351.061 34.133-21.333 2.048-27.136 9.899-23.211 31.915 10.923 63.659 9.728 62.635 75.264 53.589q158.891-22.016 318.293-40.277c25.259-2.56 35.328-11.435 29.355-32.939zM378.027 194.219c59.904 0 119.467 0 179.712 0 22.869 0 33.109-5.291 32.256-30.549-2.389-72.704 9.899-63.317-62.805-63.659-108.203 0-216.405 0-324.267 0-27.136-0.512-38.229 6.656-38.229 35.157 1.877 70.827-2.731 58.027 59.221 58.88 51.712 0.683 102.912 0.171 154.112 0.171zM91.136 29.525h576.512v38.741c0 87.040 0 173.909 0 260.949 0 23.040 6.997 30.208 29.696 29.525 73.387-2.219 60.587 8.875 61.099-61.44 0-110.080 0-220.331 0-330.411 0-24.576-8.021-30.891-31.573-30.72q-347.819 1.024-695.808 0c-24.064 0-31.403 7.168-31.232 31.232 1.024 119.467 1.195 238.933 0 359.424 0 26.283 8.533 32.597 33.28 32.256 57.856-1.195 57.856 0 57.856-59.051v-270.507z" />
28
- <glyph unicode="&#x4c;" glyph-name="linkedin" horiz-adv-x="1096" d="M378.839-64h234.818v380.6c-0.115 2.18-0.181 4.732-0.181 7.299 0 17.148 2.933 33.61 8.325 48.913 18.477 47.756 64.975 81.744 119.411 81.744 0.217 0 0.434-0.001 0.65-0.002 85.088 0 118.941-62.422 118.941-154.001v-364.554h235.013v391.363c0 209.379-115.843 306.633-270.431 306.633-3.397 0.176-7.375 0.276-11.377 0.276-85.454 0-160.246-45.646-201.324-113.886l0.974-1.058v97.841h-234.818c3.131-63.596 0-681.166 0-681.166zM131.302 696.613c1.841-0.096 3.997-0.15 6.166-0.15 70.031 0 126.801 56.771 126.801 126.801 0 1.773-0.036 3.538-0.108 5.293-1.362 74.499-50.869 131.442-131.294 131.442-1.841 0.096-3.997 0.15-6.166 0.15-70.031 0-126.801-56.771-126.801-126.801 0-1.773 0.036-3.538 0.108-5.293-0.091-1.46-0.139-3.466-0.139-5.482 0-69.598 56.421-126.019 126.019-126.019 1.353 0 2.702 0.021 4.045 0.064l1.369-0.005zM248.711-64v681.166h-234.818v-681.166h234.818z" />
29
- <glyph unicode="&#x4d;" glyph-name="medium" horiz-adv-x="1293" d="M0 809.32v151.349h484.806v-1.783l17.832-65.087 109.667-407.906q15.603-58.177 31.206-116.354c0-2.452 2.006-3.566 4.235-2.675 0.899 0.591 1.747 1.849 2.001 3.312l111.454 414.179 48.146 176.313h483.469v-151.572h-4.235c-14.934 0-29.646 0-44.58 0-4.902-0.022-10.177-1.17-14.975-3.221-4.709-0.532-16.911-9.762-25.001-21.956-5.298-7.041-8.399-15.65-8.399-24.983 0-0.233 0.002-0.465 0.006-0.697q0-313.139 0-626.535c-0.011-0.319-0.017-0.695-0.017-1.071 0-8.082 2.868-15.495 7.641-21.275-7.498 8.847 0.66-2.521 10.991-11.442 8.277-7.432 19.135-11.92 31.042-11.92 0.409 0 0.817 0.005 1.224 0.016 13.983-0.001 28.025-0.001 41.845-0.001h4.458v-3.566q0-73.111 0-146.445h-462.739c-0.034 0.533-0.053 1.156-0.053 1.783s0.019 1.25 0.057 1.868q-0.004 71.912-0.004 143.685c0 1.114 0 2.229 0 3.789h96.515v668.698c-3.566 1.337-4.904 0-5.795-3.343q-29.2-103.871-57.285-207.296l-161.379-583.997c-2.229-8.47-4.458-16.717-6.687-25.188h-175.199s0 2.229-1.114 3.343l-60.852 222.899-160.488 588.677c-1.337 4.904-1.337 4.904-6.687 4.012v-668.698h96.738v-4.458q0-73.111 0-146.445h-387.845v152.017h49.707c0.97-0.123 2.093-0.193 3.232-0.193s2.262 0.070 3.364 0.206c11.449 1.849 25.89 12 34.716 26.038 3.75 4.782 6.060 10.819 6.165 17.391q0 316.541 0 633.281c-0.021 3.62-0.924 7.669-2.528 11.342 0.243 2.833-7.367 14.032-17.619 21.991-8.527 7.722-19.721 12.387-32.005 12.387-0.551 0-1.099-0.009-1.645-0.028-14.409 0.002-28.675 0.002-43.163 0.002z" />
30
- <glyph unicode="&#x4e;" glyph-name="minify" d="M244.524 72.828c3.553 5.798-0.865-3.084-6.972-10.526-35.223-35.201-68.945-69.452-103.726-103.703-14.1-13.997-33.525-22.647-54.969-22.647-11.348 0-22.131 2.422-31.859 6.778-27.618 12.237-46.878 39.882-46.878 72.026 0 22.325 9.291 42.48 24.217 56.81l101.544 101.366c-16.571-15.614-4.263-2.16 10.381 8.213-4.202 5.204-7.027 8.559-10.205 11.56l-89.335 89.512c-0.261-0.319-3.339 2.282-5.427 5.573-2.997 5.565-4.731 12.087-4.731 19.013 0 0.978 0.035 1.948 0.103 2.909 4.057 4.921 10.436 8.32 17.615 8.521 43.288 0.001 86.543 0.001 129.798 0.001h179.023c1.53 0.095 3.319 0.149 5.12 0.149s3.59-0.054 5.364-0.16c-0.168 0.013-0.077 0.014 0.013 0.014 9.751 0 17.655-7.904 17.655-17.655 0-1.061-0.094-2.1-0.273-3.11 0.016-29.907 0.016-59.921 0.016-89.758q0-112.11 0-224.221c0.66-1.778 1.041-3.831 1.041-5.974 0-7.121-4.216-13.258-10.289-16.050-2.023-0.657-4.224-1.009-6.508-1.009-7.33 0-13.812 3.632-17.744 9.194q-45.949 45.971-91.499 92.051c3.89-5.539-2.709 2.264-7.247 11.283zM886.113 185.997c5.826-6.179 8.121-9.004 10.77-11.652 35.31-35.31 69.385-69.032 103.636-104.166 14.141-14.205 22.884-33.795 22.884-55.426 0-36.978-25.546-67.989-59.952-76.347-6.248-1.654-12.806-2.541-19.57-2.541-21.704 0-41.275 9.129-55.085 23.756l-104.023 103.849-7.945 7.768-9.357-8.828-89.159-89.335c0.312-0.541-3.553-4.67-8.341-7.347-4.333-2.131-9.274-3.337-14.497-3.337-1.911 0-3.784 0.161-5.606 0.471-4.663 3.855-7.749 9.78-7.749 16.426 0 0.050 0 0.1 0.001 0.15 0 73.261 0 146.53 0 219.799 0 32.662 0 65.324 0 97.986-0.459 1.497-0.723 3.218-0.723 5.001 0 9.751 7.904 17.655 17.655 17.655 1.833 0 3.6-0.279 5.262-0.797l317.668 0.034c0.522 0.060 1.127 0.093 1.74 0.093 8.971 0 16.243-7.272 16.243-16.243 0-4.019-1.46-7.697-3.878-10.533 4.384 5.383-1.42-3.319-8.937-10.174q-44.716-44.711-89.56-89.202c3.812 2.402-3.136-3.205-11.14-6.922zM245.76 823.172l89.688 90.041c-6.447-6.153 4.178 6.713 17.378 16.229 5.098 3.007 10.891 4.67 17.072 4.67 1.423 0 2.826-0.088 4.203-0.259 8.486-1.396 8.31-10.4 8.31-17.638q0-157.837 0-315.498c0-18.538-4.943-23.128-24.011-23.128-104.342 0-208.861 0-313.203 0-6.749 0.104-13.125 3.133-17.643 7.932-1.432 2.499-2.269 5.477-2.269 8.651 0 5.661 2.665 10.7 6.808 13.931 15.399 15.743 31.112 31.279 46.649 46.816l57.026 57.909-9.181 9.71c-35.31 35.31-69.385 69.032-103.636 104.166-14.223 13.509-23.071 32.559-23.071 53.676 0 8.596 1.466 16.85 4.162 24.525 6.485 26.059 29.621 47.893 58.533 53.086 5.633 1.325 11.579 2.046 17.693 2.046 21.959 0 41.746-9.302 55.635-24.18l102.264-102.444c-11.027 12.493-0.547 2.233 7.359-9.861zM775.062 822.466c39.901 40.077 76.623 77.33 114.052 114.052 14.357 14.968 34.522 24.269 56.859 24.269 43.488 0 78.742-35.254 78.742-78.742 0-22.645-9.559-43.057-24.861-57.421-33.94-34.29-68.191-68.188-102.266-102.263-2.825-2.825-5.65-6.003-9.534-10.24l62.323-61.263c13.418-13.418 27.189-26.483 40.077-40.43 3.281-2.891 7.111-9.74 8.444-17.445 1.443-10.097-5.443-15.394-17.625-15.57h-312.32c-23.658 0-27.719 4.061-27.719 27.895q0 154.306 0 308.789c-0.413 1.424-0.651 3.059-0.651 4.749 0 6.691 3.722 12.513 9.21 15.508 2.175 0.813 4.58 1.256 7.088 1.256 6.687 0 12.638-3.151 16.45-8.049q45.938-45.421 91.312-91.147c-15.147 17.038-0.765 3.060 10.102-13.439z" />
31
- <glyph unicode="&#x4f;" glyph-name="archive" horiz-adv-x="833" d="M382.025 265.41h-238.592c-1.362-0.048-2.963-0.075-4.569-0.075-76.722 0-138.918 62.196-138.918 138.918 0 1.37 0.020 2.735 0.059 4.095q-0.005 206.441-0.005 412.734c0 76.722 62.196 138.918 138.918 138.918 161.666 0 324.026 0 486.213 0 0.971 0.025 2.113 0.040 3.26 0.040 56.17 0 104.23-34.726 123.881-83.881 14.209-31.287-1.593-54.73-34.412-54.73h-503.578c-1.857 0.176-4.014 0.277-6.195 0.277-38.361 0-69.459-31.098-69.459-69.459 0-2.237 0.106-4.45 0.313-6.633q-0.021-131.52-0.021-263.318c0-50.705 27.784-77.968 78.662-77.968h501.321c1.458 0.217 3.141 0.341 4.852 0.341 19.181 0 34.73-15.549 34.73-34.73 0-6.532-1.803-12.643-4.94-17.862-21.008-51.071-70.552-86.546-128.396-86.667h-243.122zM451.484 213.315h208.377v-121.553c25.7 0 15.802 0 40.634 0 2.535 0.441 5.797 2.794 7.78 6.017 12.82 17.355 33.139 28.447 56.049 28.447 38.361 0 69.459-31.098 69.459-69.459 0-2.169-0.099-4.314-0.294-6.432-2.734-30.281-26.005-55.449-56.157-61.132-4.598-1.004-9.383-1.54-14.293-1.54-22.154 0-41.758 10.918-53.726 27.666-2.948 4.367-7.652 7.070-12.987 7.070-0.611 0-1.215-0.036-1.807-0.105-22.676 0.007-10.694 0.007-33.268 0.007 0-29.867-28.826-86.824-105.578-86.824-1.14-0.046-2.478-0.072-3.822-0.072-50.887 0-93.019 37.48-100.298 86.34-24.726 0.555-14.828 0.555-39.833 0.555-2.535-0.441-5.797-2.794-7.78-6.017-12.746-18.188-33.546-29.892-57.081-29.892-38.361 0-69.459 31.098-69.459 69.459 0 2.741 0.159 5.444 0.468 8.102 2.724 30.229 25.995 55.398 56.147 61.080 4.598 1.004 9.383 1.54 14.293 1.54 22.154 0 41.758-10.918 53.726-27.666 2.935-4.459 7.69-7.232 13.094-7.232 0.574 0 1.14 0.031 1.698 0.092 22.679-0.006 10.697-0.006 34.661-0.006v121.553zM664.376 601.070l-217.58 80.746v80.92l217.58-80.92v-80.746zM664.376 739.815l-217.58 80.92h217.58v-80.92zM664.376 462.326l-217.58 80.746v80.746l217.58-80.746v-80.746zM446.795 404.328v80.746l217.58-80.746h-217.58z" />
32
- <glyph unicode="&#x50;" glyph-name="pencil" d="M1005.714 835.657l-105.874 106.057c-11.205 10.989-26.57 17.772-43.52 17.772s-32.315-6.783-43.53-17.782l-90.139-89.773c-5.001-4.942-8.098-11.801-8.098-19.383s3.097-14.441 8.095-19.38l155.066-154.883c4.933-4.946 11.755-8.006 19.291-8.006s14.358 3.060 19.291 8.005l89.418 90.332c11.28 10.805 18.29 25.989 18.29 42.81 0 0.25-0.002 0.499-0.005 0.748 0.003 0.173 0.005 0.423 0.005 0.672 0 16.821-7.010 32.005-18.269 42.79zM85.577 195.657l-6.4-4.754-1.646-4.754-75.703-219.429-1.829-5.669c-0.513-1.557-0.809-3.35-0.809-5.211s0.296-3.654 0.843-5.333c-0.303-0.398 1.78-4.222 4.722-7.195 1.212-2.436 4.596-5.222 8.667-6.372 1.411-0.533 2.92-0.826 4.497-0.826s3.085 0.294 4.474 0.829l4.669 3.263 219.429 74.24 6.4 3.291 4.754 4.754c3.012 4.003 4.823 9.059 4.823 14.537s-1.811 10.534-4.868 14.6l-146.241 146.223c-3.377 2.079-7.47 3.311-11.849 3.311-0.334 0-0.667-0.007-0.998-0.021-0.021 0.003-0.101 0.003-0.181 0.003-4.96 0-9.371-2.351-12.18-6zM141.897 232.229l154.697-154.88c4.341-4.569 10.461-7.411 17.245-7.411 0.753 0 1.497 0.035 2.232 0.103 8.182 0.993 15.802 6.995 19.227 15.186l508.222 505.218c4.805 1.237 8.299 5.531 8.299 10.641 0 0.83-0.092 1.638-0.267 2.415 0.044 0.358 0.062 0.86 0.062 1.367 0 6.796-3.142 12.858-8.052 16.813l-154.739 154.912c-4.933 4.946-11.755 8.006-19.291 8.006s-14.358-3.060-19.291-8.005l-507.612-505.783c-4.946-4.933-8.006-11.755-8.006-19.291s3.060-14.358 8.005-19.291z" />
33
- <glyph unicode="&#x51;" glyph-name="quora" horiz-adv-x="911" d="M695.79 106.019c3.596-15.101 23.817-39.586 50.242-54.246-40.601 22.728 2.827-5.557 50.912-24.625 9.205-2.488 13.998-8.286 13.998-15.204 0-0.382-0.015-0.761-0.043-1.136 0.003-17.605 0.003-35.261 0.003-52.916 0.257-1.013 0.404-2.177 0.404-3.375 0-7.898-6.403-14.301-14.301-14.301-0.266 0-0.531 0.007-0.794 0.022-59.108-9.182-115.605-5.828-166.805 29.129-7.085-0.7-40.335 30.641-61.431 69.534-3.148 6.217-8.387 9.67-14.433 9.67-1.336 0-2.632-0.169-3.869-0.486 2.529-0.954-45.655-7.205-94.816-9.766-3.969-0.12-5.873-0.132-7.78-0.132-94.629 0-182.061 30.815-252.809 82.957-85.845 51.128-164.078 162.048-186.131 292.088-5.712 28.702-8.77 58.662-8.77 89.337 0 116.169 43.862 222.094 115.928 302.117 45.578 64.244 143.675 127.546 256.753 147.171 27.893 5.565 56.97 8.538 86.741 8.538 104.131 0 199.769-36.366 274.906-97.090 75.283-48.643 146.935-154.036 168.449-276.688 5.832-29.094 8.949-59.458 8.949-90.549 0-103.708-34.672-199.318-93.057-275.871 16.652 8.453-41.705-60.467-114.896-108.714l-7.526-5.466zM629.407 245.495c1.236 1.766 4.237 5.473 7.062 9.534 33.173 48.522 52.973 108.474 52.973 173.049 0 0.735-0.003 1.469-0.008 2.203 0.319 11.927 0.501 26.1 0.501 40.317 0 51.28-2.361 102.009-6.982 152.083-3.832 61.431-43.719 131.186-103.212 176.534-33.71 26.441-75.921 42.117-121.793 42.117-51.63 0-98.622-19.858-133.754-52.353-59.034-54.74-96.017-132.976-96.090-219.851-1.412-44.858 0-89.878 0-134.722-0.011-0.992-0.017-2.164-0.017-3.337 0-42.177 8.042-82.475 22.677-119.446 31.895-82.723 109.754-169.41 226.985-158.817 10.417 0.883 20.657 3.708 33.368 6.003-26.659 40.96-57.732 69.385-103.283 79.095-4.557 1.173-8.784 5.253-10.387 10.481-0.912 24.477-0.030 49.017-0.030 73.382-0.027 0.266-0.043 0.574-0.043 0.886 0 5.070 4.11 9.181 9.181 9.181 0.64 0 1.265-0.065 1.868-0.19 4.087 0.251 8.936 0.389 13.818 0.389 42.722 0 82.986-10.523 118.342-29.118 29.503-15.928 57.751-37.291 89.001-57.771z" />
34
- <glyph unicode="&#x52;" glyph-name="recycle" d="M0 240.022c3.708 17.655 6.532 35.31 11.299 51.377-7.126-8.74 11.71 43.949 40.441 89.805q27.355 46.14 55.426 93.985l5.12 9.357c-17.655 11.123-33.898 21.539-50.141 33.015 5.822-5.696-10.335 5.639-22.639 20.313-4.919 5.51-7.844 12.605-7.844 20.383 0 9.889 4.727 18.675 12.046 24.219-3.645-1.351 9.614 8.768 24.869 15.010 56.421 23.003 112.387 45.249 168.178 67.494-6.106-1.961 5.043 2.664 16.931 5.336 4.708 1.271 9.284 1.923 14.013 1.923 26.118 0 47.589-19.9 50.077-45.365 0.783-4.665 1.359-11.168 1.428-17.793 0.001-57.978 0.001-116.063 0.001-173.972-0.021-10.077-2.028-20.3-5.67-29.708-4.239-12.323-16.269-21.427-30.425-21.427-3.504 0-6.878 0.558-10.037 1.589 6.52-3.21-10.628 2.488-25.818 11.211-5.909 3.025-11.736 7.615-17.032 11.499l-19.068 12.359c8.284 9.307 1.068 2.312-4.432-5.926q-27.524-46.156-54.89-92.060c-6.004-6.006-17.172-30.182-21.757-56.615-1.298-6.087-1.965-11.997-1.965-18.063 0-36.533 24.174-67.419 57.399-77.535 13.393-5.084 32.907-9.050 53.262-9.677 47.947-1.243 95.616-0.007 143.991-0.007v-127.47c-2.295 0-4.767 0-7.415 0-47.669 0-95.338 0-143.007 0-1.38-0.024-3.009-0.037-4.641-0.037-53.195 0-103.050 14.302-145.929 39.269-40.348 21.217-73.7 67.505-80.455 122.039 0.117 0.52-0.434 3.603-1.382 6.506l0.065 38.965zM529.655 960c8.121-1.766 16.066-3.354 24.011-5.473 41.158-5.964 94.925-41.852 129.257-92.078 26.639-37.158 48.531-76.529 72.365-114.664 5.473-8.651 10.417-17.655 16.066-27.189 17.655 11.652 34.251 23.305 51.553 33.721-3.028-0.505 11.386 7.634 27.317 12.175 3.654 1.177 6.994 1.751 10.469 1.751 13.188 0 24.446-8.262 28.88-19.893 3.479-7.925 5.842-18.24 6.072-29.080 0.001-59.408 0.001-118.729 0.001-178.051-0.015-8.262-1.436-16.972-4.052-25.147-9.543-30.29-39.733-43.179-73.808-30.467-39.548 14.83-78.742 30.543-118.113 45.903-19.597 7.592-39.018 15.183-58.439 23.128-15.99 3.526-29.254 17.061-32.616 34.149-0.057 0.657-0.064 1.101-0.064 1.547 0 17.183 9.899 32.055 24.305 39.223 13.319 9.295 26.737 17.77 40.332 26.774 0.441-0.988-0.304 1.449-1.462 3.635-22.196 36.972-43.382 74.754-67.040 110.948 8.017-6.546-12.692 21.384-39.313 42.065-14.667 12.194-33.179 19.41-53.376 19.41s-38.71-7.216-53.099-19.211c25.271 24.464-12.142-5.895-40.479-43.481 19.652 25.731-1.942 1.266-17.598-26.949l-100.686 59.592c35.31 60.381 75.211 113.699 141.241 141.241-34.894-12.533 6.236 4.964 49.994 15.797l38.282 0.622zM735.868 160.044c7.004-0.482 15.18-0.756 23.42-0.756 23.683 0 46.837 2.267 69.257 6.596 54.391 15.17 80.344 60.543 61.453 116.334 19.88-44.969-1.019 13.112-31.86 64.551-4.156 8.188-10.689 17.899-16.515 29.022l97.633 58.439c0.396 0.012 1.445-0.414 2.31-1.070 30.175-50.13 62.661-99.035 76.255-157.297 4.796-15.802 7.557-33.964 7.557-52.77 0-36.685-10.506-70.915-28.672-99.848-15.944-29.748-59.158-63.651-110.656-76.957-28.747-8.77-62.15-14.028-96.75-14.243-17.768-0.001-34.011-0.001-53.078-0.001 0-17.655 0-33.015 0-49.258-0.026-8.341-1.711-17.96-4.778-26.939-3.703-11.521-14.901-20.166-28.118-20.166-3.391 0-6.65 0.569-9.685 1.617 1.124-1.594-12.643 3.507-24.506 11.276q-79.804 51.514-159.605 103.774c-39.371 25.777-39.018 61.44 0 87.217l149.892 97.633c5.65 3.708 11.123 7.415 17.655 10.593 32.132 17.655 58.262 3.531 59.498-33.545-0.177-17.302-0.706-34.957-0.706-54.201z" />
35
- <glyph unicode="&#x53;" glyph-name="seo" d="M640 324.32h-151.52v87.84h126.24c8.837 0 16 7.163 16 16v66.080c0 8.837-7.163 16-16 16h-126.24v73.6h150.72c8.837 0 16 7.163 16 16v66.080c0 8.837-7.163 16-16 16h-249.6c-8.837 0-16-7.163-16-16v-423.68c0-8.837 7.163-16 16-16h250.4c8.837 0 16 7.163 16 16v66.080c0 8.837-7.163 16-16 16v0zM295.040 449.12c-27.243 25.69-60.119 44.648-96 55.36-12.16 5.28-22.24 10.24-30.56 14.88-6.525 3.489-12.689 7.616-18.4 12.32-3.204 2.715-5.771 6.102-7.52 9.92-1.675 3.943-2.493 8.197-2.4 12.48-0.196 5.436 0.618 10.861 2.4 16 1.559 4.269 3.952 8.185 7.040 11.52 2.931 2.939 6.485 5.181 10.4 6.56 5.121 1.88 10.545 2.802 16 2.72 5.868 0.144 11.7-0.947 17.12-3.2 4.517-1.996 8.474-5.073 11.52-8.96 3.693-4.755 6.412-10.192 8-16 2.034-7.016 3.004-14.297 2.88-21.6 0-8.837 7.163-16 16-16h80c6.879-0.018 12.999 4.363 15.2 10.88v1.76c0.51 1.55 0.78 3.169 0.8 4.8v4c0.199 18.749-3.337 37.351-10.4 54.72-6.484 17.080-16.394 32.653-29.12 45.76-14.215 13.736-31.172 24.314-49.76 31.040-19.396 6.945-39.88 10.359-60.48 10.080-20.14 0.235-40.186-2.791-59.36-8.96-17.943-5.928-34.569-15.273-48.96-27.52-14.061-11.771-25.321-26.529-32.96-43.2-7.485-16.923-11.25-35.256-11.040-53.76-0.308-17.979 2.842-35.85 9.28-52.64 6.347-15.934 16.381-30.136 29.28-41.44 30.757-24.553 65.881-43.065 103.52-54.56 14.493-5.372 27.766-13.586 39.040-24.16 2.89-3.307 5.069-7.174 6.4-11.36 1.694-5.545 2.504-11.323 2.4-17.12 0.050-5.427-0.76-10.827-2.4-16-1.304-3.972-3.43-7.625-6.24-10.72l11.84-10.72-11.68 10.080c-2.624-2.855-5.926-5.001-9.6-6.24-5.624-1.846-11.523-2.712-17.44-2.56-8.13-0.199-16.237 0.936-24 3.36-5.492 1.716-10.487 4.736-14.56 8.8-4.135 4.554-7.1 10.045-8.64 16-2.43 9.347-3.561 18.984-3.36 28.64 0 8.837-7.163 16-16 16h-81.28c-6.879 0.018-12.999-4.363-15.2-10.88v-1.76c-0.494-1.499-0.764-3.062-0.8-4.64v-4.48c-0.349-21.369 3.794-42.573 12.16-62.24 8.179-18.8 20.875-35.288 36.96-48 32.617-25.906 73.234-39.653 114.88-38.88 20.378 0.054 40.622 3.293 60 9.6 17.592 5.53 33.909 14.504 48 26.4 13.909 11.625 24.873 26.373 32 43.040 7.182 17.558 10.72 36.393 10.4 55.36 0.036 17.877-2.994 35.628-8.96 52.48-5.571 16.093-14.579 30.78-26.4 43.040v0zM996.96 584.64c-7.145 20.974-18.775 40.138-34.080 56.16-14.863 15.548-32.935 27.669-52.96 35.52-42.728 15.595-89.592 15.595-132.32 0-19.961-7.869-37.937-20.053-52.64-35.68-15.124-16.074-26.587-35.233-33.6-56.16-7.557-23.019-11.234-47.135-10.88-71.36v-118.72c-0.368-24.279 3.309-48.449 10.88-71.52 7.046-20.853 18.568-39.912 33.76-55.84 14.748-15.457 32.721-27.475 52.64-35.2 42.865-15.442 89.775-15.442 132.64 0 19.957 7.741 37.978 19.756 52.8 35.2 15.254 15.909 26.832 34.97 33.92 55.84 7.595 23.065 11.272 47.24 10.88 71.52v118.72c0.371 24.291-3.361 48.471-11.040 71.52v0zM794.4 514.080c-0.139 12.101 1.096 24.178 3.68 36 1.741 8.286 5.054 16.162 9.76 23.2 3.551 5.173 8.409 9.314 14.080 12 13.895 5.682 29.465 5.682 43.36 0 5.828-2.793 10.841-7.035 14.56-12.32 4.796-6.91 8.218-14.678 10.080-22.88 2.661-11.864 3.896-24.003 3.68-36.16v-119.68c0.189-12.156-1.046-24.292-3.68-36.16-1.735-8.364-5.106-16.303-9.92-23.36-3.719-5.285-8.732-9.527-14.56-12.32-13.738-5.637-29.142-5.637-42.88 0-5.778 2.728-10.742 6.92-14.4 12.16-4.815 7.115-8.185 15.106-9.92 23.52-2.646 12.029-3.881 24.325-3.68 36.64v119.36h-0.16z" />
36
- <glyph unicode="&#x54;" glyph-name="trash" horiz-adv-x="796" d="M57.026 903.15c0 0 0 0 0 0 0-31.397 25.452-56.85 56.85-56.85 0.062 0 0.124 0 0.177 0h568.497c0 0 0 0 0 0 31.397 0 56.85 25.452 56.85 56.85s-25.452 56.85-56.85 56.85c0 0 0 0 0 0h-568.506c-31.383-0.099-56.817-25.472-57.017-56.85zM739.585 618.726c31.286 0.099 56.641 25.392 56.84 56.673v57.026c0 0 0 0.001 0 0.001 0 31.397-25.452 56.85-56.85 56.85-0.124 0-0.248 0-0.353-0.001h-681.833c-0.062 0-0.124 0-0.186 0-31.433 0-56.926-25.431-57.026-56.85v-56.85c0-31.397 25.452-56.85 56.85-56.85v-625.523c0 0 0 0 0 0 0-31.53 25.51-57.102 57.026-57.202h568.516c31.457 0.2 56.908 25.713 57.007 57.203v625.523zM170.726 618.726h113.699v-569.026h-113.699v569.026zM341.451 618.726h113.699v-569.026h-113.699v569.026zM512.177 618.726h113.699v-569.026h-113.876v569.026z" />
37
- <glyph unicode="&#x55;" glyph-name="uptime" horiz-adv-x="1134" d="M57.234 390.583h217.051l164.571-418.011c8.581-21.457 29.195-36.339 53.284-36.339 28.233 0 51.692 20.443 56.381 47.334l119.455 695.199 89.966-250.149c8.129-22.356 29.192-38.034 53.918-38.034 0.009 0 0.018 0 0.026 0h264.593c31.711 0 57.417 25.707 57.417 57.417s-25.707 57.417-57.417 57.417h-223.817l-150.126 416.549c-8.447 21.735-29.2 36.861-53.486 36.861-27.832 0-51.024-19.866-56.17-46.191l-122.207-707.105-103.314 263.497c-8.551 21.544-29.217 36.526-53.389 36.571h-256.006c-31.711 0-57.417-25.707-57.417-57.417s25.707-57.417 57.417-57.417v0z" />
38
- <glyph unicode="&#x56;" glyph-name="upload" horiz-adv-x="1365" d="M1050.836-64h-749.992c-0.424-0.002-0.925-0.003-1.426-0.003-15.013 0-29.805 0.942-44.322 2.77-117.762 14.242-218.304 105.483-247.147 224.715-3.005 14.041-5.359 25.576-7.949 36.169v69.208c-0.121-0.517 1.417 1.772 2.319 4.359 11.525 110.342 91.606 206.428 199.228 241.984 7.938 1.803 12.284 6.922 12.284 13.057 0 1.006-0.117 1.986-0.338 2.925 0.011 0.63 0.007 1.476 0.007 2.323 0 163.941 132.901 296.842 296.842 296.842 20.495 0 40.506-2.077 59.832-6.032-0.203-0.254 1.768-0.59 3.817-0.59 6.46 0 12.14 3.336 15.413 8.378 26.059 43.611 96.992 96.055 180.393 117.272-11.657-2.522 15.599 5.389 44.039 9.689 10.816 1.059 21.262 1.533 31.817 1.533 18.246 0 36.161-1.416 53.642-4.144 69.441-4.088 148.797-45.322 204.691-107.946 55.785-58.363 89.947-137.21 89.947-224.035 0-13.662-0.846-27.126-2.488-40.343-0.163 0.309-0.348-1.151-0.348-2.653 0-6.791 3.784-12.699 9.359-15.729 68.861-34.597 134.23-117.504 155.763-216.754-1.424 7.797 3.362-11.618 5.916-31.73 1.696-13.937 2.586-28.537 2.586-43.344s-0.889-29.407-2.618-43.748c-15.395-134.38-118.284-249.368-253.362-283.546-10.044-3.904-33.128-8.976-57.16-10.586zM633.468 145.743h146.185c12.397 1.14 22.314 11.010 23.532 23.433l0.009 195.727c0.974 12.508 10.94 22.506 23.448 23.534l97.549 0.006c14.36 0 48.493 0 0 48.728l-195.149 194.913c-6.226 6.256-14.843 10.128-24.364 10.128s-18.139-3.872-24.363-10.127l-195.15-194.914c-49.199-49.199-11.535-48.728 0-48.728h97.457c13.001 0 23.54-10.539 23.54-23.54v-194.913c0.741-13.575 11.929-24.302 25.623-24.302 0.592 0 1.18 0.020 1.763 0.060z" />
39
- <glyph unicode="&#x57;" glyph-name="world" d="M365.714 18.103c5.976-10.646 28.073-27.415 54.041-35.262 31.188-10.424 66.163-16.318 102.515-16.318 38.771 0 75.977 6.704 110.52 19.015-13.109-5.71 1.945-0.090 15.19 8.16-33.216 43.97-73.627 69.57-128.484 67.193s-103.131-25.783-153.783-42.789zM125.074 219.246c-3.508 4.984-5.606 11.179-5.606 17.865 0 9.726 4.44 18.414 11.404 24.149 7.002 8.637 15.414 15.952 21.631 24.912-4.73-9.278 15.3 15.941 28.060 45.071 11.803 37.763 8.328 48.369-17.82 67.203-1.097 0-2.011 1.829-3.109 2.56-14.538 5.499-40.503 33.064-54.492 66.844-3.657 7.945-7.497 14.527-10.423 21.659-15.909 34.194-29.989 68.206-21.577 108.434 8.298 9.68-1.302 0.041-8.378-11.33 20.448 38.773-2.988 0.547-18.783-41.421-10.326-34.045-15.799-70.328-15.799-107.889s5.474-73.844 15.667-108.095c-0.221-16.144 12.884-49.446 33.481-76.783 3.135-7.668 21.778-23.63 44.121-32.032zM454.217 861.257l1.28-2.194c8.042 10.711 0.704-0.748-8.764-10.044-18.299-15.19-36.584-30.184-54.87-45.361 59.907 40.798 9.274 11.484-33.074-26.82-1.783-2.523-3.062-6.094-3.062-9.964 0-1.683 0.242-3.309 0.693-4.846 2.261-3.854 6.823-6.973 12.148-7.552 0.898-0.057 1.861-0.085 2.832-0.085 6.38 0 12.471 1.238 18.045 3.486q91.104 35.176 180.521 71.382c2.854 1.477 5.345 4.779 6.024 8.702 0.122 0.926 0.186 1.91 0.186 2.909 0 12.725-10.315 23.040-23.040 23.040-1.615 0-3.192-0.166-4.713-0.482-0.754-0.189-1.792-0.313-2.859-0.313-6.948 0-12.673 5.237-13.443 11.979-2.099 5.094-3.315 10.939-3.315 17.068 0 0.45 0.007 0.898 0.020 1.345 0.23 0.933 0.363 2.080 0.363 3.259 0 7.25-5.023 13.327-11.779 14.94 8.614-5.016-0.37 1.021-10.353 5.127-9.261 4.806-26.68 9.694-45.095 10.962-78.148-2.53-171.621-39.469-246.413-98.904 37.597 34.161-25.949-13.059-74.639-72.857l13.606-28.078c4.925-1.539 10.588-2.426 16.458-2.426 9.768 0 18.962 2.455 27 6.781 6.459 3.32 14.452 5.354 22.919 5.354s16.46-2.034 23.515-5.639c-4.164 1.729 1.135-0.895 6.854-2.522 4.053-1.832 8.393-2.851 12.97-2.851 16.663 0 30.171 13.508 30.171 30.171 0 0.137-0.001 0.273-0.003 0.409 0.016-0.566 0.75 3.026 1.083 6.734 0.525 10.233 6.505 19.572 15.231 24.801-11.879-9.884-0.573 0.973 12.66 8.961q56.969 30.067 113.837 59.141c-6.309-2.273 3.829 2.272 14.694 4.98zM503.223 618.789c13.531 6.4 26.514 12.069 39.314 18.286 5.65 2.873 12.322 4.556 19.386 4.556 4.433 0 8.71-0.663 12.74-1.894-1.772 5.663 56.736-14.645 107.651-46.072-11.303 9.775 12.401-6.356 30.666-27.346 12.963-14.089 23.386-30.18 35.272-44.992-6.989 3.404 18.165-26.478 49.745-47.457 10.514-6.811 22.49-10.592 35.348-10.592 3.984 0 7.883 0.363 11.666 1.058 11.396 0.105 20.89 9.701 20.89 21.515 0 4.048-1.114 7.835-3.053 11.072-0.976 1.882-1.581 4.226-1.581 6.711 0 1.416 0.196 2.787 0.563 4.086 2.929 2.032 6.625 3.313 10.621 3.313 0.759 0 1.507-0.046 2.242-0.136 2.334-0.111 7.185-2.578 10.887-6.212 25.231-20.659 50.099-41.688 75.699-61.985 12.069-9.509 21.211-6.949 25.783 7.863 3.369 9.396 5.316 20.237 5.316 31.532 0 0.55-0.005 1.099-0.014 1.647-0.263 42.389-13.256 99.616-36.027 151.584 7.501-12.427-6.079 20.844-26.073 49.278 118.608-161.488 35.527-28.798-71.081 80.907 50.945-50.529 7.397-0.455-45.169 38.030-7.394 5.781-15.317 8.763-23.936 8.763-5.84 0-11.361-1.369-16.258-3.804-12.222-5.39-24.473-11.424-36.359-18.19-16.64-8.046-18.286-7.314-25.234 9.326-1.026 10.748-10.008 19.088-20.939 19.088-5.21 0-9.977-1.894-13.65-5.032-22.28-13.69-43.857-28.867-65.434-43.679-4.895-3.332-8.068-8.878-8.068-15.165 0-2.441 0.478-4.771 1.347-6.9q2.882-8.289 5.259-17.066c1.995-2.751 3.191-6.194 3.191-9.917 0-8.97-6.946-16.319-15.752-16.96-21.084-8.049-42.661-15.546-63.141-24.689 2.909 3.329-14.693-6.197-28.765-19.435-6.227-5.566-10.163-13.695-10.163-22.744 0-6.523 2.045-12.568 5.529-17.53zM593.554 562.834c-20.993 12.338-46.239 19.625-73.188 19.625-1.463 0-2.921-0.021-4.373-0.064-65.067-5.298-106.027-42.966-133.821-97.824-3.271-5.69-5.2-12.511-5.2-19.782 0-12.99 6.157-24.542 15.711-31.897-8.384 4.063 15.818-14.994 43.748-27.058-34.324 12.321 16.004-9.664 69.761-22.946 21.284-3.464 36.121-17.656 39.951-35.897-2.367 6.813 0.391-0.114 2.137-7.433 6.143-39.307 12.36-78.073 18.395-116.838-2.344 10.411 2.408-32.601 10.992-74.213 6.928-25.261 26.676-31.295 52.459-13.924-12.475-9.056 4.526 1.252 18.3 14.826-29.756-26.513 2.517-1.845 27.796 28.806 26.681 35.728 52.647 71.202 77.332 107.408 1.65 7.609 18.879 26.348 40.565 37.757 21.975 7.156 37.189 26.885 37.189 50.166 0 0.718-0.014 1.433-0.043 2.144-0.063 0.2-0.1 0.548-0.1 0.904s0.038 0.703 0.109 1.038c0.586 1.261 0.931 2.772 0.931 4.365 0 4.378-2.608 8.147-6.355 9.838 36.045-26.123 5.795-0.803-28.714 17.572-17.225 5.638-35.937 23.326-45.206 45.89 10.205-22.437 0.183 4.434-14.439 28.168 14.264-22.666 0.548 3.173-17.978 24.763-1.787 2.226-6.771 5.211-12.43 6.305-19.907 4.414-40.204 7.34-59.587 12.643 26.012-9.617-12.883 1.666-48.169 19.14-4.050 0.727-8.367 6.070-8.367 12.422 0 1.803 0.348 3.525 0.981 5.102zM539.977-64h-55.954c2.685-0.476-3.199 1.009-9.304 1.788-65.31 1.008-144.474 24.437-212.994 64.186-120.342 57.945-225.505 193.667-253.256 355.816-4.080 22.553-5.909 42.484-8.469 62.233v55.954c-0.579-3.095 0.961 2.979 1.785 9.279 1.727 81.753 33.964 174.177 87.408 250.693 62.601 105.24 193.094 195.584 345.686 217.516 18.059 2.695 33.601 4.341 49.144 6.17h55.954c-2.808 0.507 3.133-0.994 9.296-1.787 44.675-0.295 103.039-13.054 156.284-35.552 169.597-73.29 274.922-202.57 310.579-387.438 3.84-19.749 5.303-40.046 7.863-60.16v-54.857c0.445 2.562-1.023-3.265-1.789-9.311-0.264-42.76-13.201-101.078-35.915-154.22-75.118-174.938-208.604-281.544-400.055-314.458-15.177-2.56-30.72-3.84-46.263-5.851z" />
40
- <glyph unicode="&#x58;" glyph-name="pos_middle" d="M0 255.81c0-35.241 28.456-63.81 64.056-63.81h895.888c35.377 0 64.056 28.994 64.056 63.81v384.38c0 35.241-28.456 63.81-64.056 63.81h-895.888c-35.377 0-64.056-28.994-64.056-63.81v-384.38zM0 800c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 96c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0-32c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32zM0 928c0-17.673 14.476-32 31.769-32h960.462c17.546 0 31.769 14.844 31.769 32 0 17.673-14.476 32-31.769 32h-960.462c-17.546 0-31.769-14.844-31.769-32z" />
41
- <glyph unicode="&#x59;" glyph-name="pos_footer" d="M0 384.19c0 35.241 28.456 63.81 64.056 63.81h895.888c35.377 0 64.056-28.994 64.056-63.81v-384.38c0-35.241-28.456-63.81-64.056-63.81h-895.888c-35.377 0-64.056 28.994-64.056 63.81v384.38zM0 672c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 800c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 928c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32zM0 544c0 17.673 14.476 32 31.769 32h960.462c17.546 0 31.769-14.844 31.769-32 0-17.673-14.476-32-31.769-32h-960.462c-17.546 0-31.769 14.844-31.769 32z" />
42
- <glyph unicode="&#x5a;" glyph-name="star" horiz-adv-x="1108" d="M1061.82 608.734h-294.154c-0.215-0.002-0.468-0.003-0.722-0.003-32.971 0-61.217 20.227-73.008 48.949 2.219-5.396-0.573 0.484-2.378 6.781l-86.442 257.146-2.101 6.494c-8.374 19.126-27.135 32.245-48.96 32.245-23.194 0-42.927-14.817-50.25-35.502l-0.115-0.373-87.291-257.862c1.558 5.097-0.132-1.945-2.835-8.46-12.006-28.401-40.045-48.274-72.727-48.274-0.296 0-0.592 0.002-0.887 0.005h-294.682c-25.642-3.248-45.271-24.925-45.271-51.186 0-0.136 0.001-0.272 0.002-0.407 0.027-16.564 8.167-31.293 20.675-40.373l2.628-1.819 229.211-161.021c20.484-13.761 33.881-36.915 34-63.206 0-0.107 0.001-0.211 0.001-0.316 0-6.067-0.767-11.955-2.208-17.572 1.142 2.679-1.008-5.384-4.459-12.715l-86.355-256.883v-1.91c-1.388-4.412-2.187-9.486-2.187-14.747 0-28.061 22.748-50.808 50.808-50.808 0.702 0 1.401 0.014 2.096 0.042-0.047-0.003 0.015-0.004 0.077-0.004 9.536 0 18.494 2.478 26.264 6.826l8.705 6.163 231.885 162.74c12.206 7.704 27.058 12.276 42.977 12.276s30.771-4.572 43.314-12.474c-7.243 4.386 0.917 0.236 7.788-5.423l-0.102 0.082 231.885-162.931c7.777-4.564 17.128-7.259 27.108-7.259 0.073 0 0.145 0 0.218 0 0.221-0.004 0.495-0.006 0.77-0.006 28.12 0 51.003 22.423 51.745 50.364-0.002 5.381-0.911 10.616-2.582 15.497l0.101 2.144-88.055 258.435c1.605-4.417-1.49 2.474-3.341 9.859-1.674 6.132-2.58 12.65-2.58 19.38 0 0.062 0 0.124 0 0.186 0.066 24.265 11.745 45.936 29.802 59.64l6.108 4.338 226.155 158.729 6.303 4.011c11.197 8.706 18.704 22.538 19.1 38.138-0.050 26.51-20.083 48.268-45.805 51.043z" />
43
- <glyph unicode="&#x61;" glyph-name="lock" d="M568 112h-112l20.8 120c-28.8 12.8-48 41.6-48 75.2 0 46.4 36.8 83.2 83.2 83.2s83.2-36.8 83.2-83.2c0-33.6-19.2-62.4-48-75.2l20.8-120zM624 504h-224v168c0 62.4 51.2 112 112 112s112-49.6 112-112v-168zM736 504v168c0 123.2-100.8 224-224 224s-224-100.8-224-224v-168h-56c-30.4 0-56-25.6-56-56v-392c0-30.4 25.6-56 56-56h560c30.4 0 56 25.6 56 56v392c0 30.4-25.6 56-56 56h-56z" />
44
- <glyph unicode="&#x62;" glyph-name="book" horiz-adv-x="727" d="M707.467 808.92c-2.704 9.436-9.638 16.489-18.143 19.762-0.335 0.134-0.671 0.263-1.011 0.385-0.338 0.116-0.678 0.224-1.020 0.328-3.334 1.063-6.841 1.586-10.376 1.438-0.732-0.032-1.507-0.048-2.322-0.048-4.964-0.008-11.389 0.645-18.57 2.063-12.594 2.459-27.479 7.227-42.21 13.683-11.060 4.833-22.069 10.603-32.15 16.917-7.561 4.732-14.603 9.77-20.762 14.877-4.621 3.827-8.744 7.693-12.233 11.443-5.247 5.621-9.006 11-11.161 15.356-1.087 2.179-1.496 4.090-1.911 5.683-0.417 1.597-0.265 2.865-0.265 3.929v0.147c0 9.547-4.633 18.687-12.259 24.436-7.624 5.749-17.788 7.537-26.931 4.782l-474.675-143.044c-12.698-3.827-21.469-15.534-21.469-28.795v-666.072c0-10.182 1.798-20.104 4.889-29.476 2.707-8.21 6.395-16.027 10.827-23.458 7.77-13.003 17.797-24.86 29.448-35.633 17.493-16.137 38.693-29.876 62.282-40.397 23.591-10.496 49.603-17.75 76.729-20.243 3.777-0.346 7.663 0.039 11.299 1.119 0.985 0.293 2.247 0.677 3.919 1.192 6.43 1.98 18.749 5.841 35.546 11.126 117.454 36.968 452.335 143.268 452.35 143.274 12.466 3.956 20.976 15.585 20.976 28.664v653.767c0.633 4.15 0.433 8.495-0.798 12.795v0zM542.709 817.019c8.776-5.86 17.982-11.248 27.4-16.17-39.795-11.404-87.554-25.093-135.832-38.936-59.784-17.143-120.357-34.518-167.561-48.078-23.603-6.78-43.863-12.604-59.017-16.971-7.579-2.183-13.88-4.001-18.692-5.395-1.489-0.43-2.812-0.814-4.006-1.161-15.907 1.901-31.585 5.708-46.115 10.997-12.141 4.412-23.481 9.844-33.481 15.902-7.501 4.541-14.245 9.436-20.027 14.452-7.916 6.848-13.95 13.929-17.953 20.448l416.585 125.558c1.54-3.032 3.209-5.977 5.006-8.824 4.783-7.561 10.395-14.531 16.585-21.076 10.842-11.437 23.473-21.618 37.108-30.746v0zM105.647 46.507c-7.508 4.95-14.299 10.286-20.161 15.755-8.803 8.197-15.457 16.72-19.586 24.403-2.075 3.839-3.531 7.454-4.447 10.723-0.916 3.275-1.302 6.188-1.302 8.803v568.871c14.659-10.516 31.171-19.49 48.965-26.74 14.961-6.078 30.833-10.922 47.275-14.275v-610.805c-5.932 1.717-11.765 3.705-17.43 5.962-12.018 4.782-23.302 10.699-33.314 17.302v0zM256.541 40.302c-15.080-4.762-28.58-9.019-40-12.613v609.125c15.947 4.6 40.601 11.481 69.172 19.743v-267.943l83.133 83.765 55.211-27.922v252.161c45.112 12.656 89.321 25.505 129.125 36.914 37.621 10.783 71.111 20.275 94.933 27.1v-596.265c-42.103-13.361-141.164-44.792-237.658-75.363-56.069-17.762-111.271-35.236-153.917-48.702v0z" />
45
- <glyph unicode="&#x63;" glyph-name="unlock" d="M800 512h-64v160c0 123.2-100.8 224-224 224s-224-100.8-224-224c0 0 0-40 0-48s8-16 16-16 72 0 80 0c8 0 16 8 16 16s0 48 0 48c0 62.4 51.2 112 112 112 62.4 0 112-49.6 112-112v-160h-400c-30.4 0-48-17.6-48-48v-408c0-30.4 25.6-56 56-56h560c30.4 0 56 25.6 56 56v408c0 30.4-17.6 48-48 48zM547.2 232l20.8-120h-112l20.8 120c-28.8 12.8-48 41.6-48 75.2 0 46.4 36.8 83.2 83.2 83.2s83.2-36.8 83.2-83.2c0-32-19.2-60.8-48-75.2z" />
46
- <glyph unicode="&#x64;" glyph-name="plugin" d="M272 736c16 16 544-512 528-528-65.6-65.6-160-112-272-112-75.2 0-164.8 0-224 0-12.8 0-24-4.8-32-12.8-20.8-17.6-38.4-38.4-59.2-57.6-35.2-33.6-86.4-33.6-120 0-35.2 33.6-35.2 84.8-1.6 121.6 17.6 19.2 38.4 36.8 56 57.6 8 9.6 12.8 22.4 12.8 35.2 0 67.2 0 139.2 0 224 0 112 48 208 112 272zM785.6 353.6c-16-16-128 96-112 112s139.2 137.6 176 174.4c33.6 33.6 144-80 112-110.4-59.2-59.2-116.8-116.8-176-176zM545.6 593.6c-16-16-128 96-112 112s139.2 137.6 176 174.4c33.6 33.6 144-80 112-110.4-59.2-59.2-116.8-116.8-176-176z" />
47
- <glyph unicode="&#x65;" glyph-name="caret_down" d="M779.2 508.8l-204.8-204.8c-14.4-14.4-32-32-62.4-32s-49.6 17.6-62.4 32l-204.8 204.8c-27.2 27.2-27.2 67.2 0 94.4s67.2 27.2 94.4 0l172.8-172.8 172.8 172.8c27.2 27.2 67.2 27.2 94.4 0s27.2-67.2 0-94.4z" />
48
- <glyph unicode="&#x66;" glyph-name="power" d="M848 726.4c-16 20.8-46.4 24-67.2 6.4-20.8-16-24-46.4-6.4-67.2v0c48-59.2 75.2-131.2 75.2-212.8 0-92.8-38.4-177.6-99.2-238.4s-145.6-99.2-238.4-99.2c-92.8 0-177.6 38.4-238.4 99.2s-99.2 145.6-99.2 238.4c0 80 27.2 153.6 75.2 212.8 16 20.8 12.8 49.6-6.4 67.2-20.8 16-49.6 12.8-67.2-6.4-60.8-75.2-96-169.6-96-272 0-118.4 48-227.2 126.4-305.6s185.6-126.4 305.6-126.4c118.4 0 227.2 48 305.6 126.4s126.4 187.2 126.4 307.2c0 102.4-35.2 196.8-96 270.4zM512 398.4c27.2 0 48 20.8 48 48v384c0 27.2-20.8 48-48 48s-48-20.8-48-48v-384c0-27.2 20.8-48 48-48z" />
49
- <glyph unicode="&#x67;" glyph-name="radio_checked" d="M512 896c-248 0-448-200-448-448s200-448 448-448 448 200 448 448-200 448-448 448zM720 496l-176-176c-3.2-3.2-28.8-32-64-32s-60.8 28.8-64 32l-112 112c-16 16-16 48 0 64s48 14.4 64-1.6l112-110.4 176 176c16 16 48 16 64 0s16-48 0-64z" />
50
- <glyph unicode="&#x68;" glyph-name="radio_default, radio" d="M512 803.2c195.2 0 355.2-158.4 355.2-355.2s-160-355.2-355.2-355.2-355.2 160-355.2 355.2 160 355.2 355.2 355.2zM512 896c-248 0-448-200-448-448s200-448 448-448 448 200 448 448-200 448-448 448z" />
51
- <glyph unicode="&#x69;" glyph-name="download_alt" d="M753.6 112c-174.4 0-318.4 0-492.8 0-16 0-27.2 1.6-28.8 1.6-80 11.2-145.6 70.4-163.2 150.4-1.6 8-3.2 14.4-4.8 22.4 0 14.4 0 30.4 0 44.8 0 1.6 1.6 1.6 1.6 3.2 12.8 78.4 57.6 131.2 132.8 160 6.4 1.6 6.4 4.8 6.4 9.6-1.6 123.2 112 217.6 233.6 193.6 6.4-1.6 9.6 0 14.4 4.8 32 38.4 72 64 120 76.8 9.6 1.6 19.2 4.8 28.8 6.4 25.6 3.2 52.8-1.6 54.4-1.6 54.4-8 99.2-30.4 136-70.4 44.8-49.6 64-105.6 57.6-172.8 0-6.4 1.6-9.6 6.4-12.8 54.4-33.6 88-81.6 102.4-144 1.6-8 3.2-12.8 3.2-20.8 3.2-28.8 0-54.4 0-56-12.8-91.2-78.4-164.8-168-188.8-12.8-3.2-27.2-6.4-40-6.4zM560 560c-32 0-73.6 0-96 0-8 0-16-8-16-16 0-43.2 0-84.8 0-128 0-9.6-8-16-16-16-27.2 0-38.4 0-64 0-9.6 0-32 0 0-32 44.8-44.8 84.8-84.8 128-128 8-8 22.4-9.6 32 0 43.2 43.2 84.8 84.8 128 128 32 32 8 32 0 32-16 0-48 0-64 0-9.6 0-16 8-16 16 0 48 0 80 0 128 0 9.6-8 16-16 16z" />
52
- <glyph unicode="&#x6a;" glyph-name="rocket" d="M603.2 182.4c-36.8-36.8-148.8-36.8-184 0-19.2 19.2-35.2 0-35.2-19.2 0-33.6 0-78.4 0-112 0-19.2 17.6-36.8 36.8-19.2 11.2 11.2 24 24 36.8 36.8 11.2-27.2 25.6-64 36.8-92.8 9.6-24 27.2-24 36.8 0 9.6 25.6 27.2 70.4 36.8 92.8 9.6-9.6 17.6-17.6 36.8-36.8 17.6-17.6 36.8 0 36.8 19.2 0 32 0 78.4 0 112-1.6 19.2-19.2 38.4-38.4 19.2zM800 419.2c-19.2 19.2-80 60.8-80 80 0 168-51.2 307.2-144 400-52.8 52.8-76.8 51.2-128 0-92.8-92.8-144-232-144-400 0-17.6-62.4-62.4-80-80-36.8-36.8-32-76.8-32-96 0-56 25.6-140.8 32-160 11.2-36.8 60.8-35.2 80-16 36.8 36.8 83.2 83.2 96 96 56-56 168-56 224 0 12.8-12.8 59.2-59.2 96-96 19.2-19.2 70.4-20.8 80 16 4.8 19.2 32 104 32 160 0 19.2 4.8 59.2-32 96zM512 534.4c-52.8 0-96 43.2-96 96s43.2 96 96 96c51.2 0 96-44.8 96-96 0-49.6-43.2-96-96-96zM560 630.4c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48z" />
53
- <glyph unicode="&#x6b;" glyph-name="search" d="M923.2 137.6l-228.8 230.4c33.6 52.8 52.8 112 52.8 179.2-1.6 184-150.4 332.8-334.4 332.8s-332.8-148.8-332.8-332.8 148.8-332.8 332.8-332.8c67.2 0 126.4 19.2 179.2 52.8l230.4-230.4c28.8-28.8 73.6-28.8 100.8 0s27.2 73.6 0 100.8zM174.4 547.2c0 131.2 105.6 238.4 238.4 238.4s238.4-105.6 238.4-238.4-107.2-236.8-238.4-236.8-238.4 105.6-238.4 236.8z" />
54
- <glyph unicode="&#x6c;" glyph-name="theme" d="M336 704c113.6-113.6 224-224 336-336 16-16 16-33.6 0-48-24-24-57.6-57.6-80-80-16-16-32-16-48 0-17.6 17.6-62.4 62.4-80 80-30.4 28.8-51.2 12.8-64 0-16-16-80-128-160-208-81.6-81.6-152-104-208-48s-33.6 126.4 48 208c80 80 192 144 208 160s32 32 0 64c-19.2 19.2-60.8 60.8-80 80-16 16-16 32 0 48 24 24 56 56 80 80 16 16 32 17.6 48 0zM384 800c17.6 17.6 36.8 35.2 56 52.8 27.2 25.6 62.4 19.2 94.4 16 44.8-4.8 84.8-24 121.6-51.2 32-25.6 64-52.8 99.2-75.2 81.6-54.4 169.6-92.8 268.8-73.6-80-80-176-172.8-256-252.8-16-16-32-16-48 0-30.4 30.4-310.4 308.8-337.6 336-14.4 14.4-14.4 32 1.6 48z" />
55
- <glyph unicode="&#x6d;" glyph-name="speach" d="M699.206 589.081h-345.743c-13.632 0-24.696-11.014-24.696-24.696 0-13.632 11.064-24.696 24.696-24.696h345.743c13.632 0 24.696 11.064 24.696 24.696 0 13.682-11.064 24.696-24.696 24.696zM699.206 292.729h-345.743c-13.632 0-24.696-11.014-24.696-24.696 0-13.632 11.064-24.696 24.696-24.696h345.743c13.632 0 24.696 11.064 24.696 24.696 0 13.682-11.064 24.696-24.696 24.696zM699.206 440.905h-345.743c-13.632 0-24.696-11.014-24.696-24.696 0-13.632 11.064-24.696 24.696-24.696h345.743c13.632 0 24.696 11.064 24.696 24.696 0 13.682-11.064 24.696-24.696 24.696zM501.639 931.12c-272.742 0-493.919-221.226-493.919-493.919 0-109.897 35.908-211.447 96.611-293.437l-51.318-177.218 175.983 58.727c78.089-51.911 171.884-81.991 272.643-81.991 272.742 0 493.919 221.078 493.919 493.919 0 272.693-221.177 493.919-493.919 493.919v0zM501.639 42.065c-78.138 0-153.461 22.671-217.917 65.494-16.398 10.916-35.463 16.497-54.726 16.497-9.681 0-19.362-1.432-28.845-4.297 7.162 28.598 1.185 59.023-16.398 82.781-50.528 68.21-77.249 149.312-77.249 234.661 0 217.868 177.268 395.135 395.135 395.135s395.135-177.268 395.135-395.135c0-217.868-177.268-395.135-395.135-395.135v0z" />
56
- <glyph unicode="&#x6e;" glyph-name="support" horiz-adv-x="847" d="M504.231 4.118c22.087 9.699 42.18 20.276 60.268 31.085 39.815 23.797 69.925 48.698 90.442 68.056 1.536-0.142 3.092-0.214 4.664-0.214 27.658 0 50.078 22.421 50.078 50.078v206.037c0 27.658-22.421 50.078-50.078 50.078s-50.078-22.421-50.078-50.078v-200.346c-6.829-6.618-15.244-14.275-25.222-22.478-15.543-12.784-34.873-26.902-57.905-40.556-14.759-8.751-31.036-17.312-48.824-25.227-11.141 4.622-23.975 5.258-36.212 0.833-16.277-5.886-33.641-11.126-52.114-15.437-26.934-6.284-43.674-33.213-37.388-60.147 6.284-26.934 33.213-43.674 60.147-37.388 22.439 5.235 43.588 11.614 63.421 18.787 13.406 4.849 23.478 14.826 28.803 26.918zM101.589 257.573v277.577c0.007 42.612 8.608 82.95 24.154 119.726 23.312 55.141 62.386 102.213 111.51 135.39 24.558 16.59 51.606 29.709 80.464 38.686 28.862 8.974 59.532 13.819 91.496 13.822 42.612-0.007 82.948-8.608 119.726-24.154 55.141-23.312 102.213-62.386 135.39-111.51 16.59-24.558 29.709-51.605 38.686-80.463 8.974-28.864 13.819-59.533 13.822-91.497v-277.577c0-27.658 22.421-50.078 50.078-50.078s50.078 22.421 50.078 50.078v277.577c0.007 56.165-11.411 109.929-32.066 158.743-30.991 73.243-82.631 135.406-147.685 179.366-32.532 21.979-68.44 39.405-106.787 51.33-38.341 11.929-79.124 18.344-121.243 18.342-56.165 0.007-109.929-11.411-158.743-32.066-73.243-30.991-135.406-82.629-179.366-147.685-21.977-32.532-39.405-68.44-51.33-106.787-11.929-38.34-18.344-79.124-18.342-121.243v-277.577c0-27.658 22.421-50.078 50.078-50.078s50.078 22.421 50.078 50.078zM108.743 357.729v-206.037c0-27.658 22.421-50.078 50.078-50.078s50.078 22.421 50.078 50.078v206.037c0 27.658-22.421 50.078-50.078 50.078s-50.078-22.421-50.078-50.078z" />
57
- <glyph unicode="&#x6f;" glyph-name="edit" d="M380.8 412.8l96-96c6.4-6.4 17.6-6.4 24 4.8l315.2 313.6c6.4 1.6 6.4 12.8 0 19.2l-96 96c-6.4 6.4-17.6 6.4-24 0l-315.2-313.6c-6.4-6.4-6.4-17.6 0-24zM345.6 390.4l-3.2-3.2-1.6-3.2-46.4-136-1.6-3.2c-1.6-4.8 0-8 3.2-11.2s8-4.8 11.2-3.2l3.2 1.6 136 46.4 3.2 1.6 3.2 3.2c4.8 4.8 4.8 12.8 0 17.6l-91.2 91.2c-3.2 3.2-11.2 3.2-16-1.6zM916.8 787.2l-65.6 65.6c-14.4 14.4-40 14.4-54.4 0l-56-56c-6.4-6.4-6.4-17.6 0-24l96-96c6.4-6.4 17.6-6.4 24 0l56 56c14.4 14.4 14.4 40 0 54.4zM832 528c-24 0-48-24-48-48v-361.6l-592-6.4v608h352c24 0 48 24 48 48s-24 48-48 48h-400c-24 0-48-24-48-48v-704c0-24 24-48 48-48h688c25.6 0 48 22.4 48 48 0 4.8 0 416 0 416 0 24-24 48-48 48z" />
58
- <glyph unicode="&#x70;" glyph-name="info" d="M512 800c195.2 0 352-156.8 352-352s-156.8-352-352-352-352 156.8-352 352 156.8 352 352 352zM512 896c-248 0-448-200-448-448s200-448 448-448 448 200 448 448-200 448-448 448zM523.2 396.8c0-11.2 6.4-19.2 6.4-30.4 0-14.4-11.2-28.8-27.2-28.8-27.2 0-41.6 41.6-41.6 64 0 92.8 121.6 102.4 121.6 174.4 0 33.6-24 62.4-76.8 62.4-36.8 0-65.6-14.4-88-36.8-6.4-4.8-12.8-8-20.8-8-16 0-30.4 14.4-30.4 32 0 6.4 1.6 14.4 6.4 19.2 32 38.4 84.8 59.2 139.2 59.2 88 0 142.4-51.2 142.4-116.8 1.6-110.4-131.2-120-131.2-190.4zM508.8 192c-24 0-44.8 20.8-44.8 46.4 0 24 19.2 46.4 44.8 46.4 24 0 44.8-22.4 44.8-46.4-1.6-25.6-22.4-46.4-44.8-46.4z" />
59
- <glyph unicode="&#x71;" glyph-name="badge" d="M683.2 276.8l-163.2 113.6-163.2-113.6 65.6 179.2-131.2 97.6h163.2l65.6 179.2 65.6-179.2h163.2l-131.2-97.6 65.6-179.2zM912 374.4c0 65.6-19.2 97.6-32 131.2-12.8 35.2-24 64-32 81.6-28.8 65.6 0 131.2 16 147.2s32 32 49.6 49.6c-19.2 20.8-62.4 59.2-81.6 81.6-33.6-16-81.6-32-147.2-32s-132.8 33.6-163.2 65.6c-33.6-35.2-116.8-67.2-180.8-67.2-67.2 0-99.2 14.4-131.2 32-17.6-17.6-54.4-54.4-81.6-81.6 12.8-12.8 30.4-30.4 49.6-49.6 16-16 44.8-97.6 16-147.2-9.6-16-32-51.2-49.6-81.6-16-32-32-65.6-32-131.2s32-168 97.6-212.8c49.6-32 131.2-32 179.2-49.6 49.6-16 113.6-81.6 131.2-113.6 16 32 83.2 97.6 131.2 113.6 49.6 17.6 131.2 16 179.2 49.6 70.4 49.6 81.6 148.8 81.6 214.4z" />
60
- <glyph unicode="&#x72;" glyph-name="caret_up" d="M779.2 292.8c-27.2-27.2-67.2-27.2-94.4 0l-172.8 172.8-172.8-172.8c-27.2-27.2-67.2-27.2-94.4 0s-27.2 67.2 0 94.4l204.8 204.8c14.4 14.4 32 32 62.4 32s49.6-17.6 62.4-32l204.8-204.8c27.2-27.2 27.2-67.2 0-94.4z" />
61
- <glyph unicode="&#x73;" glyph-name="options" d="M224 448c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112zM624 448c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112zM1024 448c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z" />
62
- <glyph unicode="&#x74;" glyph-name="cog" d="M740.8 448v0c0-25.6-4.8-51.2-12.8-75.2-3.2-9.6-6.4-17.6-11.2-25.6-11.2-22.4-25.6-43.2-43.2-60.8s-38.4-32-60.8-44.8c-8-4.8-17.6-8-25.6-11.2-24-8-48-12.8-75.2-12.8v0c-25.6 0-51.2 4.8-73.6 12.8-9.6 3.2-17.6 6.4-27.2 11.2-22.4 11.2-43.2 25.6-60.8 43.2s-33.6 38.4-44.8 60.8c-4.8 8-8 17.6-11.2 27.2-8 24-12.8 48-12.8 73.6s4.8 51.2 12.8 75.2c3.2 9.6 6.4 17.6 11.2 27.2 11.2 22.4 25.6 43.2 44.8 60.8 17.6 17.6 38.4 32 60.8 43.2 8 4.8 17.6 8 27.2 11.2 24 8 48 12.8 73.6 12.8v0c25.6 0 51.2-4.8 75.2-12.8 9.6-3.2 17.6-6.4 25.6-11.2 22.4-11.2 43.2-25.6 60.8-44.8 17.6-17.6 32-38.4 43.2-60.8 4.8-8 8-17.6 11.2-25.6 8-22.4 12.8-48 12.8-73.6v0 0zM958.4 489.6v0c-1.6 17.6-16 32-33.6 33.6h-20.8c-22.4 0-41.6 12.8-49.6 30.4-1.6 4.8-3.2 9.6-4.8 14.4-4.8 11.2-9.6 22.4-14.4 33.6v0c-3.2 3.2-4.8 8-6.4 12.8v0c-1.6 6.4-3.2 12.8-3.2 19.2 0 16 6.4 28.8 16 40v0l11.2 11.2c12.8 14.4 14.4 35.2 1.6 49.6v0c-8 11.2-17.6 20.8-27.2 30.4s-20.8 19.2-30.4 28.8v0c-12.8 11.2-32 11.2-44.8 1.6l-8-8-8-9.6c-16-16-40-20.8-60.8-12.8-3.2 1.6-4.8 3.2-8 3.2-12.8 6.4-25.6 11.2-40 16-3.2 0-4.8 1.6-6.4 1.6v0c-6.4 3.2-12.8 6.4-19.2 12.8-9.6 9.6-14.4 20.8-16 32 0 4.8 0 9.6 0 14.4v12.8c0 17.6-12.8 33.6-30.4 36.8-1.6 0-4.8 0-6.4 0v0c-11.2 1.6-24 1.6-36.8 1.6s-25.6 0-36.8-1.6v0c-1.6 0-4.8 0-6.4 0-17.6-3.2-30.4-17.6-30.4-36.8v-16c0-24-14.4-44.8-36.8-52.8-1.6 0-3.2-1.6-4.8-1.6-14.4-4.8-28.8-11.2-43.2-17.6v0c-1.6 0-1.6-1.6-3.2-1.6-6.4-3.2-14.4-4.8-24-4.8-16 0-28.8 6.4-40 16v0l-11.2 11.2c-12.8 12.8-33.6 14.4-48 4.8-1.6-1.6-3.2-3.2-4.8-4.8v0c-9.6-8-19.2-16-27.2-25.6-9.6-8-17.6-17.6-25.6-27.2v0c-1.6-1.6-3.2-3.2-4.8-4.8-9.6-14.4-8-35.2 4.8-48l11.2-11.2c17.6-17.6 20.8-41.6 11.2-62.4 0-1.6-1.6-3.2-1.6-3.2-6.4-14.4-12.8-28.8-17.6-43.2 0-1.6-1.6-3.2-1.6-4.8v0c-3.2-6.4-6.4-14.4-12.8-19.2-11.2-11.2-25.6-16-40-16v0h-16c-17.6 0-33.6-12.8-36.8-30.4 0-1.6 0-4.8 0-6.4-1.6-14.4-1.6-27.2-1.6-40v0 0c0-12.8 0-24 1.6-36.8v0c0-1.6 0-4.8 0-6.4 3.2-17.6 17.6-30.4 36.8-30.4v0h16c24 0 44.8-14.4 52.8-35.2v0c0-1.6 1.6-3.2 1.6-4.8v0c4.8-14.4 11.2-28.8 17.6-43.2v0c0-1.6 1.6-1.6 1.6-3.2 3.2-6.4 4.8-14.4 4.8-24 0-16-6.4-28.8-16-40v0l-11.2-11.2c-12.8-12.8-14.4-32-4.8-46.4 1.6-1.6 3.2-3.2 4.8-6.4 8-9.6 16-19.2 25.6-27.2 8-8 17.6-17.6 27.2-25.6 1.6-1.6 3.2-3.2 6.4-4.8 12.8-8 30.4-8 43.2 1.6l16 16c17.6 17.6 41.6 20.8 62.4 11.2 1.6 0 1.6-1.6 3.2-1.6v0c14.4-6.4 28.8-12.8 43.2-17.6 1.6 0 3.2-1.6 3.2-1.6 8-3.2 14.4-6.4 20.8-12.8 11.2-11.2 16-25.6 16-40v0-16c0-19.2 14.4-35.2 33.6-36.8v0c14.4-4.8 27.2-4.8 41.6-4.8s27.2 0 41.6 1.6v0c19.2 1.6 33.6 17.6 33.6 36.8v16c0 22.4 12.8 41.6 32 51.2 3.2 1.6 8 3.2 12.8 4.8 12.8 4.8 24 9.6 35.2 14.4 3.2 1.6 6.4 4.8 11.2 4.8 6.4 1.6 12.8 3.2 19.2 3.2 14.4 0 27.2-4.8 36.8-14.4 1.6-1.6 3.2-3.2 4.8-4.8l9.6-9.6c12.8-12.8 33.6-14.4 48-3.2v0c1.6 1.6 1.6 1.6 3.2 3.2 9.6 8 19.2 17.6 28.8 25.6 9.6 9.6 17.6 19.2 25.6 28.8 1.6 1.6 1.6 3.2 3.2 3.2 9.6 14.4 9.6 33.6-3.2 46.4v0l-3.2 3.2-9.6 12.8c-16 16-20.8 41.6-11.2 62.4 1.6 1.6 1.6 3.2 3.2 6.4 6.4 12.8 12.8 27.2 17.6 41.6 0 1.6 1.6 3.2 1.6 6.4 3.2 6.4 6.4 12.8 12.8 19.2 11.2 11.2 25.6 16 40 16v0h16c19.2 0 36.8 16 36.8 35.2v0c1.6 11.2 1.6 24 1.6 36.8 0 14.4 0 27.2-1.6 41.6z" />
63
- <glyph unicode="&#x75;" glyph-name="cylinder" d="M512 352c-212.8 0-390.4 78.4-416 160 0-20.8 0-108.8 0-108.8 0-92.8 185.6-163.2 416-163.2s416 70.4 416 163.2c0 0 0 91.2 0 108.8-25.6-81.6-203.2-160-416-160zM512 128c-212.8 0-390.4 78.4-416 160 0-27.2 0-105.6 0-105.6 0-92.8 185.6-166.4 416-166.4s416 73.6 416 166.4c0 0 0 94.4 0 105.6-25.6-81.6-203.2-160-416-160zM512 864c-230.4 0-416-73.6-416-160v-80c0-91.2 185.6-160 416-160s416 68.8 416 160v80c0 86.4-185.6 160-416 160z" />
64
- <glyph unicode="&#x76;" glyph-name="rocket_alt" horiz-adv-x="800" d="M797.496 927.982c0 3.36-0.111 5.277-0.139 5.804-0.472 8.415-4.721 16.135-11.581 21.023-6.86 4.916-15.552 6.443-23.662 4.138-5.388-1.416-162.048-47.823-387.305-306.712-98.062-16.358-160.549-52.878-197.291-97.062-38.908-46.657-47.712-98.701-47.656-135.36 0.028-31.021 6.026-52.044 6.526-53.794 3.166-10.942 12.719-18.857 24.050-19.912 11.359-1.083 22.217 4.916 27.383 15.080l0.361 0.667c2.138 4.138 14.136 26.078 30.549 45.879 2.138 2.611 4.499 4.943 6.776 7.415 0.417-0.305 0.639-0.833 1.083-1.139l91.314-63.931-14.775-56.682c-1.472-5.554 0.667-11.47 5.332-14.802 4.693-3.333 10.942-3.444 15.747-0.305l49.545 32.687 90.258-63.209c0.444-0.305 1.028-0.361 1.5-0.667-6.415-12.331-14.469-24.384-21.551-33.798-4.666-6.249-8.887-11.414-11.886-14.941l-3.471-3.971-0.861-0.972-0.167-0.194c-7.721-8.276-9.637-20.496-4.832-30.743 4.832-10.248 15.469-16.552 26.744-15.913 2.638 0.305 49.406 2.86 98.618 34.132 24.495 15.663 49.462 38.936 67.93 72.262 18.468 33.298 30.16 76.206 30.105 129.722 0 25.828-2.86 54.349-8.693 85.537 151.19 270.636 160.104 428.047 160.049 459.762v0zM636.142 824.31c43.796 32.521 78.455 52.489 102.617 64.625-10.664-80.372-58.487-276.579-265.998-579.486l-84.176 58.932 141.275 200.401c4.416 6.249 2.916 14.913-3.36 19.329s-14.941 2.944-19.357-3.333l-141.303-200.457-84.454 59.126c143.025 199.874 266.776 315.432 354.757 380.862v0zM189.877 458.417c4.666 19.94 13.636 41.213 30.299 61.181 18.774 22.467 48.323 44.379 94.841 60.709-20.94-26.244-42.296-54.155-64.097-84.065-15.774-3.583-29.466-11.164-41.186-19.968-7.248-5.499-13.719-11.609-19.857-17.857v0zM339.123 321.391l3.027 11.692 7.137-4.999-10.164-6.693zM590.596 382.683c-0.028-45.657-9.665-78.4-23.162-102.783-13.691-24.661-31.826-41.297-50.184-52.85 1.722 3.527 3.61 6.887 5.166 10.609 6.304 15.274 11.136 31.938 11.192 50.017 0 3.749-0.278 7.582-0.778 11.442 20.634 30.688 40.075 60.543 57.599 89.12 0.028-1.833 0.167-3.777 0.167-5.554zM213.4 116.935l63.681 90.953c8.804 12.581 5.749 29.882-6.804 38.686-12.581 8.804-29.882 5.749-38.686-6.832l-63.681-90.953c-8.804-12.581-5.749-29.882 6.832-38.686 12.553-8.804 29.882-5.749 38.658 6.832zM326.848 161.703l-127.417-181.989c-8.804-12.553-5.749-29.882 6.832-38.686 12.553-8.804 29.855-5.749 38.658 6.832l127.417 181.989c8.804 12.553 5.749 29.855-6.832 38.658-12.553 8.804-29.882 5.749-38.658-6.804zM171.104 279.594c-12.553 8.804-29.882 5.749-38.658-6.804l-127.417-181.989c-8.804-12.553-5.749-29.882 6.832-38.686 12.553-8.776 29.855-5.749 38.658 6.832l127.417 181.961c8.804 12.581 5.749 29.882-6.832 38.686zM543.218 613.606c7.609-5.304 16.302-7.859 24.911-7.859 13.691 0 27.161 6.443 35.631 18.524 13.775 19.69 9.026 46.768-10.664 60.543-7.582 5.332-16.274 7.887-24.884 7.887-13.719 0-27.189-6.471-35.659-18.552-13.719-19.662-8.998-46.768 10.664-60.543z" />
65
- <glyph unicode="&#x77;" glyph-name="bell" d="M512 864c-307.2 0-179.2-387.2-336-544 0 0 587.2 0 672 0-148.8 148.8-30.4 544-336 544zM864 272h-704c-35.2 0-64-28.8-64-64s28.8-64 64-64h240c0-62.4 49.6-112 112-112s112 49.6 112 112h240c35.2 0 64 28.8 64 64s-28.8 64-64 64z" />
66
- <glyph unicode="&#x78;" glyph-name="trophy" d="M716.8 395.2c112 75.2 259.2 168 259.2 388.8 0 32-27.2 48-48 48h-160c-25.6 48-105.6 96-256 96s-230.4-48-256-96h-160c-20.8 0-48-16-48-48 0-220.8 134.4-310.4 248-385.6 92.8-60.8 152-102.4 152-176v-62.4c-81.6-8-160-54.4-160-96 0-51.2 100.8-96 224-96s224 44.8 224 96c0 41.6-81.6 86.4-160 96v64c0 75.2 48 110.4 140.8 171.2zM784 752h112c-12.8-128-86.4-195.2-176-256 28.8 62.4 60.8 144 64 256zM128 752h112c3.2-112 35.2-193.6 64-256-89.6 60.8-163.2 128-176 256zM320 768c0 20.8 51.2 80 192 80s192-59.2 192-80-51.2-80-192-80-192 59.2-192 80z" />
67
- <glyph unicode="&#x79;" glyph-name="cross" d="M608 448l208 208c28.8 28.8 28.8 67.2 0 96s-67.2 28.8-96 0l-208-208-208 208c-28.8 28.8-67.2 28.8-96 0s-28.8-67.2 0-96l208-208-208-208c-28.8-28.8-28.8-67.2 0-96s67.2-28.8 96 0l208 208 208-208c28.8-28.8 67.2-28.8 96 0s28.8 67.2 0 96l-208 208z" />
68
- <glyph unicode="&#x7a;" glyph-name="tick" d="M400 292.8l-256 256c-28.8 28.8-83.2 28.8-112 0s-28.8-83.2 0-112l304-304c14.4-14.4 32-32 64-32s49.6 17.6 64 32l528 528c28.8 28.8 28.8 83.2 0 112s-83.2 28.8-112 0l-480-480z" />
69
- <glyph unicode="&#x7c;" glyph-name="caret_left" d="M572.8 180.8l-204.8 204.8c-14.4 14.4-32 32-32 62.4s17.6 49.6 32 62.4l204.8 204.8c27.2 27.2 67.2 27.2 94.4 0s27.2-67.2 0-94.4l-172.8-172.8 172.8-172.8c27.2-27.2 27.2-67.2 0-94.4s-67.2-27.2-94.4 0z" />
70
- </font></defs></svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/font/WPMU-DEV-App-Icons.ttf DELETED
Binary file
includes/admin/shared-ui/font/WPMU-DEV-App-Icons.woff DELETED
Binary file
includes/admin/shared-ui/font/fontawesome-webfont.eot DELETED
Binary file
includes/admin/shared-ui/font/fontawesome-webfont.svg DELETED
@@ -1,255 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata></metadata>
5
- <defs>
6
- <font id="FontAwesomeRegular" horiz-adv-x="1843" >
7
- <font-face units-per-em="2048" ascent="1536" descent="-512" />
8
- <missing-glyph horiz-adv-x="512" />
9
- <glyph horiz-adv-x="0" />
10
- <glyph horiz-adv-x="0" />
11
- <glyph unicode="&#xd;" horiz-adv-x="512" />
12
- <glyph unicode=" " horiz-adv-x="512" />
13
- <glyph unicode="&#x09;" horiz-adv-x="512" />
14
- <glyph unicode="&#xa0;" horiz-adv-x="512" />
15
- <glyph unicode="o" horiz-adv-x="1591" />
16
- <glyph unicode="&#xa8;" horiz-adv-x="2048" />
17
- <glyph unicode="&#xa9;" horiz-adv-x="2048" />
18
- <glyph unicode="&#xae;" horiz-adv-x="2048" />
19
- <glyph unicode="&#xb4;" horiz-adv-x="2048" />
20
- <glyph unicode="&#xc6;" horiz-adv-x="2048" />
21
- <glyph unicode="&#xcd;" horiz-adv-x="2048" />
22
- <glyph unicode="&#x2000;" horiz-adv-x="784" />
23
- <glyph unicode="&#x2001;" horiz-adv-x="1569" />
24
- <glyph unicode="&#x2002;" horiz-adv-x="784" />
25
- <glyph unicode="&#x2003;" horiz-adv-x="1569" />
26
- <glyph unicode="&#x2004;" horiz-adv-x="523" />
27
- <glyph unicode="&#x2005;" horiz-adv-x="392" />
28
- <glyph unicode="&#x2006;" horiz-adv-x="261" />
29
- <glyph unicode="&#x2007;" horiz-adv-x="261" />
30
- <glyph unicode="&#x2008;" horiz-adv-x="196" />
31
- <glyph unicode="&#x2009;" horiz-adv-x="313" />
32
- <glyph unicode="&#x200a;" horiz-adv-x="87" />
33
- <glyph unicode="&#x202f;" horiz-adv-x="313" />
34
- <glyph unicode="&#x203a;" horiz-adv-x="2048" />
35
- <glyph unicode="&#x205f;" horiz-adv-x="392" />
36
- <glyph unicode="&#x2122;" horiz-adv-x="2048" />
37
- <glyph unicode="&#x221e;" horiz-adv-x="2048" />
38
- <glyph unicode="&#xe000;" horiz-adv-x="1024" d="M0 0z" />
39
- <glyph unicode="&#xf000;" horiz-adv-x="1536" d="M6 1489q20 47 70 47h1382q51 0 72 -47q20 -47 -17 -84l-610 -610v-641h248q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5q0 31 22.5 53.5t53.5 22.5h250v641l-610 610q-37 37 -17 84z" />
40
- <glyph unicode="&#xf001;" horiz-adv-x="1488" d="M0 213q0 57 27.5 103t72.5 77t98.5 47.5t106.5 16.5q25 0 50.5 -4t50.5 -11v779q0 27 16 48t43 29q23 6 99.5 29t178 52.5t215 62.5t211 60.5t164 46t74.5 18.5q35 0 58.5 -23.5t23.5 -58.5v-1028q0 -59 -27.5 -104.5t-73 -76t-99.5 -47t-105 -16.5t-105.5 16.5t-98.5 47 t-71.5 75.5t-27.5 105q0 57 27.5 103t71.5 77t98.5 47t105.5 16q27 0 52.5 -4t49.5 -10v537l-678 -195v-815q0 -59 -27.5 -104.5t-71.5 -76t-98.5 -47t-105.5 -16.5q-53 0 -106.5 16.5t-98.5 47t-72.5 76t-27.5 104.5z" />
41
- <glyph unicode="&#xf002;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 257.5 -52.5t212 -143.5t143.5 -212t52 -258q0 -98 -28.5 -191.5t-81.5 -174.5l358 -359q18 -18 18 -47q0 -16 -18 -43t-45 -53.5t-53.5 -45t-42.5 -18.5q-29 0 -47 19l-359 358q-82 -53 -175 -81.5t-191 -28.5 q-137 0 -258 52t-212.5 143t-143.5 212t-52 258zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t154.5 31.5t126.5 85t86 126t32 156.5q0 82 -32 154.5t-86 127t-126.5 86t-154.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM414 901q0 51 19.5 97t54 81t80 54.5 t98.5 19.5q20 0 34.5 -14.5t14.5 -36.5q0 -20 -14.5 -34.5t-34.5 -14.5q-63 0 -107.5 -44t-44.5 -108q0 -20 -14.5 -34.5t-34.5 -14.5q-23 0 -37 14.5t-14 34.5z" />
42
- <glyph unicode="&#xf003;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v852q-31 -31 -58 -50q-106 -80 -212.5 -159.5t-211.5 -163.5q-61 -49 -131.5 -94t-156.5 -45q-82 0 -153 45t-132 94 q-104 84 -211 164t-213 159q-27 18 -57 50v-852zM154 1317q0 -31 14 -65.5t35.5 -66.5t47 -59.5t50.5 -46.5q100 -76 199.5 -150.5t199.5 -152.5q20 -16 48 -37.5t58 -42t59.5 -35t54.5 -14.5h2h2q25 0 54.5 14.5t59 35t57 42t48.5 37.5q100 78 199.5 153t199.5 150 q25 18 50.5 46t47 60t36 66.5t14.5 65.5v65h-1536v-65z" />
43
- <glyph unicode="&#xf004;" horiz-adv-x="1802" d="M0 1073q0 113 34 205t97.5 155.5t153.5 98.5t202 35q59 0 117 -18.5t110 -48.5t99 -68.5t88 -77.5q39 39 87 77.5t100.5 68.5t109 48.5t115.5 18.5q113 0 204 -35t154.5 -98.5t97 -155.5t33.5 -205q0 -66 -18.5 -130t-51 -124.5t-74.5 -115t-87 -99.5l-615 -612 q-23 -23 -55 -23q-31 0 -57 23l-615 614q-45 45 -87 99.5t-73.5 114t-50 124t-18.5 129.5z" />
44
- <glyph unicode="&#xf005;" horiz-adv-x="1675" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q20 41 49 41t50 -41l227 -459l506 -74q45 -6 54 -33.5t-23 -60.5l-367 -356l86 -504q8 -45 -15.5 -62.5t-64.5 5.5l-452 237l-453 -237q-41 -23 -64.5 -5.5t-15.5 62.5l86 504l-364 356q-35 33 -26 60.5z" />
45
- <glyph unicode="&#xf006;" horiz-adv-x="1675" d="M0 948q0 23 18.5 32t36.5 13l506 74l227 459q6 14 20 27.5t30 13.5q18 0 30.5 -13.5t18.5 -27.5l227 -459l506 -74q18 -4 36.5 -13t18.5 -32q0 -14 -7 -26.5t-17 -22.5l-367 -356l86 -504q0 -4 1 -9t1 -12q0 -20 -9 -34.5t-32 -14.5t-41 13l-452 237l-453 -237 q-18 -12 -39 -13q-23 0 -33 14.5t-10 34.5q0 6 1 11.5t1 9.5l86 504l-364 356q-10 10 -18.5 22.5t-8.5 26.5zM289 866l274 -268l-65 -377l340 178l340 -178l-66 377l274 268l-378 56l-170 344l-170 -344z" />
46
- <glyph unicode="&#xf007;" horiz-adv-x="1566" d="M0 57v387q0 37 18.5 82t48 86t65.5 74t71 43q18 6 66 13.5t102.5 14.5t104.5 13t77 10q-92 59 -144.5 153.5t-52.5 205.5q0 88 34 165.5t91.5 136t135 92.5t165.5 34t166 -34t136.5 -92.5t92 -136t33.5 -165.5q0 -109 -52 -204.5t-144 -154.5q27 -4 77 -10t104 -13 t101 -14.5t68 -13.5q35 -10 70.5 -42t65.5 -74t48.5 -87t18.5 -82v-387q-10 -4 -22.5 -14t-27 -19.5t-27.5 -16.5t-22 -7h-1370q-35 0 -53 21.5t-45 35.5z" />
47
- <glyph unicode="&#xf008;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM115 154q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM115 512 q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM115 870q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154z M115 1229q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM461 154q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11t11.5 28v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11.5t-11.5 -27.5v-512z M461 870q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11.5t11.5 27.5v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11t-11.5 -28v-512zM1497 154q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153 zM1497 512q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 870q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154 q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 1229q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153z" />
48
- <glyph unicode="&#xf009;" d="M0 78v536q0 33 22.5 55.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-55.5 -22.5h-690q-33 0 -55.5 22.5t-22.5 55.5zM0 922v538q0 31 22.5 53.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -53.5v-538q0 -33 -22.5 -54.5t-55.5 -21.5h-690 q-33 0 -55.5 21.5t-22.5 54.5zM999 78v536q0 33 21.5 55.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-53.5 -22.5h-692q-33 0 -54.5 22.5t-21.5 55.5zM999 922v538q0 31 21.5 53.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -53.5v-538 q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-33 0 -54.5 21.5t-21.5 54.5z" />
49
- <glyph unicode="&#xf00a;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM666 78v270q0 33 22.5 54.5t54.5 21.5h359q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-359q-33 0 -55 22.5t-22 55.5zM666 655v226q0 33 22.5 54t54.5 21h359q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-359q-33 0 -55 22.5t-22 54.5zM666 1188v272q0 31 22.5 53.5t54.5 22.5h359q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5 t-53.5 -22.5h-359q-33 0 -55 22.5t-22 55.5zM1331 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM1331 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226 q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5t-22.5 54.5zM1331 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5z" />
50
- <glyph unicode="&#xf00b;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h297q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h297q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-297q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h297q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM604 78v270q0 33 22.5 54.5t55.5 21.5h1085q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-1085q-33 0 -55.5 22.5t-22.5 55.5zM604 655v226q0 33 22.5 54t55.5 21h1085q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-1085q-33 0 -55.5 22.5t-22.5 54.5zM604 1188v272q0 31 22.5 53.5t55.5 22.5h1085q31 0 53.5 -22.5t22.5 -53.5v-272 q0 -33 -22.5 -55.5t-53.5 -22.5h-1085q-33 0 -55.5 22.5t-22.5 55.5z" />
51
- <glyph unicode="&#xf00c;" d="M0 732.5q0 33.5 23 55.5l174 175q23 23 56.5 22.5t55.5 -22.5l365 -365q23 -23 56.5 -23t55.5 23l746 745q23 23 56.5 23t56.5 -23l174 -174q23 -23 22.5 -56.5t-22.5 -55.5l-910 -910q-23 -23 -62.5 -39t-72.5 -16h-88q-35 0 -75 16.5t-62 38.5l-526 529 q-23 23 -23 56.5z" />
52
- <glyph unicode="&#xf00d;" horiz-adv-x="1536" d="M0 192.5q0 38.5 29 67.5l508 510l-508 500q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t67 -29l504 -504l504 504q29 29 67.5 29t67.5 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-67 29l-504 505 l-506 -505q-29 -29 -66.5 -29t-66.5 29l-100 100q-29 29 -29 67.5z" />
53
- <glyph unicode="&#xf00e;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h168v168q0 33 33 32h65 q14 0 24.5 -9t10.5 -23v-168h166q33 0 33 -33v-66q0 -14 -9.5 -24t-23.5 -10h-166v-166q0 -14 -10 -23.5t-25 -9.5h-65q-33 0 -33 33v166h-168q-14 0 -23.5 10t-9.5 24z" />
54
- <glyph unicode="&#xf010;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h467q33 0 33 -33v-66 q0 -14 -9.5 -24t-23.5 -10h-467q-14 0 -23.5 10t-9.5 24z" />
55
- <glyph unicode="&#xf011;" horiz-adv-x="1488" d="M0 713q0 186 86 349t240 267q12 10 28 6q18 -4 25 -16l90 -131q10 -12 6 -27.5t-16 -25.5q-106 -72 -164.5 -182.5t-58.5 -239.5q0 -104 39.5 -197.5t108.5 -162t162 -108.5t197 -40t197.5 40t163.5 108.5t109.5 161.5t39.5 198q0 129 -59 239.5t-164 182.5 q-14 10 -16 24q-4 16 6 29l88 131q10 12 25.5 15t29.5 -5q154 -104 240 -267t86 -349q0 -154 -58.5 -289t-160 -236.5t-237.5 -160t-290 -58.5t-289 58.5t-236 160t-159.5 236.5t-58.5 289zM627 793v704q0 16 11 27.5t28 11.5h157q16 0 27.5 -11.5t11.5 -27.5v-704 q0 -16 -11 -27.5t-28 -11.5h-157q-16 0 -27.5 11t-11.5 28z" />
56
- <glyph unicode="&#xf012;" d="M0 39v260q0 16 11.5 27.5t27.5 11.5h192q16 0 26.5 -11.5t10.5 -27.5v-260q0 -16 -10 -27.5t-27 -11.5h-192q-39 0 -39 39zM393 39v434q0 16 11.5 27.5t27.5 11.5h193q16 0 26.5 -11.5t10.5 -27.5v-434q0 -16 -10.5 -27.5t-26.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5z M786 39v676q0 16 11.5 27.5t27.5 11.5h193q16 0 27.5 -11.5t11.5 -27.5v-676q0 -16 -11.5 -27.5t-27.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5zM1182 39v995q0 16 10 27.5t27 11.5h192q16 0 27.5 -11t11.5 -28v-995q0 -16 -11.5 -27.5t-27.5 -11.5h-192q-16 0 -26.5 11.5 t-10.5 27.5zM1575 39v1458q0 39 39 39h190q39 0 39 -39v-1458q0 -39 -39 -39h-190q-39 0 -39 39z" />
57
- <glyph unicode="&#xf013;" horiz-adv-x="1593" d="M0 651v236q0 12 30.5 21.5t68.5 15.5t74 9t48 5q18 61 49 117q-55 82 -120 157l-7 15q0 8 28 38.5t62.5 65.5t66.5 62.5t40 27.5q2 0 26.5 -18.5t54.5 -41t56.5 -43t32.5 -24.5q29 16 58.5 26.5t60.5 20.5q0 12 3 49t9 75t15.5 69t21.5 31h237q14 0 19 -15 q12 -49 17 -103t14 -106q31 -8 59.5 -19t56.5 -28q8 6 34 26.5t55.5 43t53 40t29.5 17.5t37 -27.5t65 -62.5t61.5 -65.5t27.5 -38.5q0 -4 -17.5 -28.5t-39 -53.5t-42 -55.5t-24.5 -32.5q33 -55 51 -123q49 -10 103.5 -13t101.5 -20q16 -4 16 -18v-236q0 -12 -29.5 -21.5 t-68.5 -15.5t-76 -9t-49 -5q-14 -57 -47 -117q55 -82 121 -157l6 -15q0 -8 -27.5 -38.5t-62.5 -65.5t-66.5 -62.5t-40.5 -27.5q-2 0 -26.5 18.5t-54 41t-56 43t-33.5 24.5q-29 -16 -58.5 -27.5t-59.5 -19.5q-2 -12 -5.5 -49.5t-9.5 -76t-14 -69.5t-21 -31h-237q-14 0 -19 17 q-14 49 -19 103t-11 103q-61 18 -117 50q-41 -31 -81 -60.5t-79 -62.5l-12 -4q-6 0 -37 27.5t-64.5 62.5t-61 65.5t-27.5 38.5q0 2 16 26.5t37.5 53.5t42 55.5t26.5 34.5q-33 55 -51 123q-51 10 -104.5 13t-100.5 20q-16 4 -16 18zM557 768q0 -49 18.5 -93t51 -77t77 -52.5 t93.5 -19.5t93 19.5t75.5 52.5t51 77t19.5 93t-19.5 92t-51 76t-75.5 51.5t-93 18.5t-93.5 -18.5t-77 -51.5t-51 -76t-18.5 -92z" />
58
- <glyph unicode="&#xf014;" horiz-adv-x="1304" d="M0 1175.5v34.5v36t2 36q25 14 71 23.5t98 15.5t102.5 9t78.5 5q-8 82 11.5 128t59.5 68.5t98.5 29t131.5 6.5q55 0 109.5 -3t97.5 -20.5t68.5 -54.5t25.5 -105v-24t-2 -25q29 -2 79 -5t102.5 -9t99.5 -15.5t72 -23.5v-72v-69q-37 -20 -123 -32.5t-185.5 -19t-193.5 -7.5 t-150 -1q-55 0 -150 1t-194.5 7.5t-184.5 18.5t-122 33q-2 16 -2 34.5zM133 154v837q123 -16 244 -21t244 -5h32q129 2 258 6t258 20v-837q0 -63 -44 -108.5t-107 -45.5h-731q-63 0 -108.5 45t-45.5 109zM303 199q0 -16 10.5 -26.5t26.5 -10.5h39q16 0 27.5 10t11.5 27v614 q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM504 1384q0 -10 1 -22t3 -23q144 2 291 0q0 12 2 23.5t0 21.5v15q-35 10 -74 11t-74 1q-37 0 -75.5 -1t-73.5 -11v-15zM596 199q0 -16 10 -26.5t27 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5 t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM887 199q0 -16 11 -26.5t28 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -27.5 -11.5t-11.5 -27.5v-614z" />
59
- <glyph unicode="&#xf015;" horiz-adv-x="1880" d="M0 809.5q2 15.5 14 26.5l867 710q27 20 59 21q33 0 59 -21l240 -196v102q0 16 11.5 27.5t27.5 11.5h223q16 0 26.5 -11.5t10.5 -27.5v-348l328 -268q12 -10 14 -25.5t-8 -28.5l-45 -53q-10 -14 -29 -14h-65q-16 0 -25 8l-743 608q-25 20 -50 0l-743 -608q-8 -8 -25 -8 h-65q-18 0 -29 14l-45 53q-10 12 -8 27.5zM266 76v622l674 553l674 -553v-622q0 -33 -21.5 -54.5t-54.5 -21.5h-422v498h-352v-498h-422q-33 0 -54.5 21.5t-21.5 54.5z" />
60
- <glyph unicode="&#xf016;" horiz-adv-x="1228" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h614q33 0 71 -16.5t60 -38.5l351 -351q23 -23 39 -60.5t16 -70.5v-921q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM154 154h921v692h-459q-31 0 -53 22.5t-22 55.5v458h-387v-1228zM268 326v116h693v-116 h-693zM268 596v115h693v-115h-693zM694 999h381q0 4 -4 13.5t-6 11.5l-350 348q-2 4 -9.5 6t-11.5 4v-383z" />
61
- <glyph unicode="&#xf017;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM635 608v465q0 33 23.5 56.5t56.5 23.5h80q35 0 57 -23.5t22 -56.5v-305h201q33 0 56.5 -23.5t23.5 -56.5v-80q0 -33 -23.5 -56.5t-56.5 -23.5h-360q-33 0 -56.5 23.5 t-23.5 56.5z" />
62
- <glyph unicode="&#xf018;" d="M2 35l594 1466q6 14 21.5 24.5t31.5 10.5h195l-8 -170h172l-9 170h195q16 0 31.5 -10t21.5 -25l594 -1466q6 -14 -1 -24.5t-23 -10.5h-740l-26 512h-258l-27 -512h-739q-16 0 -23.5 10t-1.5 25zM807 797h229l-20 413h-189z" />
63
- <glyph unicode="&#xf019;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM345.5 944.5q6.5 16.5 39.5 16.5h307v499q0 31 21.5 53.5t54.5 22.5h307q33 0 55.5 -22.5 t22.5 -53.5v-499h307q31 0 37 -16.5t-16 -39.5l-504 -506q-23 -23 -55.5 -22.5t-55.5 22.5l-504 506q-23 23 -16.5 39.5z" />
64
- <glyph unicode="&#xf01a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 743q10 25 37 25h208v358q0 16 11.5 28.5t27.5 12.5h201q16 0 27.5 -12t11.5 -29v-358h209q27 0 37 -25t-10 -43l-347 -346q-14 -10 -28 -10t-29 10l-346 346 q-20 18 -10 43z" />
65
- <glyph unicode="&#xf01b;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177 120t-218 44t-218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 793q-10 25 10 43l346 346q14 10 29 10q14 0 28 -10l347 -346q20 -18 10 -43t-37 -25h-209v-360q0 -16 -11.5 -27.5t-27.5 -11.5h-201q-16 0 -27.5 11t-11.5 28v360h-208 q-27 0 -37 25z" />
66
- <glyph unicode="&#xf01c;" d="M0 78v577q0 33 9 76t22 72l284 663q12 29 44 49.5t63 20.5h999q31 0 63 -20.5t44 -49.5l284 -663q12 -29 21.5 -72t9.5 -76v-577q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM238 694h387l114 -231h383l117 231h367q-2 4 -2 9.5t-2 9.5l-256 594 h-848l-256 -596q-2 -2 -2 -7.5t-2 -9.5z" />
67
- <glyph unicode="&#xf01d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM582 453v628q0 18 16 29q20 8 31 0l545 -315q16 -6 16 -27q0 -20 -16 -27l-545 -315q-8 -4 -15 -4q-8 0 -16 4q-16 10 -16 27z" />
68
- <glyph unicode="&#xf01e;" horiz-adv-x="1591" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5q141 0 271 -48.5t239 -140.5l161 162q35 35 58.5 24.5t23.5 -57.5v-463q0 -33 -22 -55q-10 -10 -23.5 -16t-29.5 -6h-463q-47 0 -58.5 23.5t23.5 58.5l160 159q-72 57 -159 88t-181 31q-117 0 -218.5 -44t-177 -120 t-119.5 -177t-44 -218t44 -218t119.5 -177t177 -120t218.5 -44q104 0 198.5 37t169 101.5t123.5 153.5t64 191q0 16 14 27q14 10 31 8l157 -20q16 -4 26.5 -16.5t8.5 -28.5q-20 -147 -89.5 -274.5t-176 -220.5t-242 -145.5t-284.5 -52.5q-166 0 -311.5 62.5t-254 171 t-171 254t-62.5 311.5z" />
69
- <glyph unicode="&#xf021;" horiz-adv-x="1916" d="M6 311l150 437q10 33 39 45t59 4l438 -150q45 -16 46 -40.5t-42 -47.5l-202 -100q53 -78 123.5 -134.5t160.5 -86.5q111 -37 221.5 -28t207 56t170 129t110.5 193q6 16 20.5 22t30.5 2l152 -51q16 -6 23 -20.5t1 -30.5q-53 -158 -159.5 -274.5t-243.5 -184t-296 -81 t-315 39.5q-135 47 -241.5 134t-179.5 208l-205 -100q-43 -23 -63.5 -5.5t-4.5 64.5zM203 1024q53 156 159.5 273.5t243.5 185t295 81t316 -39.5q133 -47 240.5 -134t180.5 -208l205 100q43 23 63.5 5.5t4.5 -62.5l-150 -439q-10 -33 -39 -45t-59 -4l-438 150 q-45 16 -46 40.5t40 47.5l202 100q-51 78 -122.5 134.5t-159.5 86.5q-111 37 -221.5 28t-207 -56t-170 -129t-110.5 -193q-6 -16 -20.5 -22t-30.5 -2l-152 51q-16 6 -23 20.5t-1 30.5z" />
70
- <glyph unicode="&#xf022;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1075h-1536v-1075zM307 346v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39 zM307 653v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM307 961v75q0 39 39 39h154q16 0 27.5 -11t11.5 -28v-75q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM692 346v76q0 16 10.5 27.5t26.5 11.5h768 q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 653v76q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 961v75q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-75q0 -39 -39 -39h-768 q-16 0 -26.5 11t-10.5 28z" />
71
- <glyph unicode="&#xf023;" horiz-adv-x="1253" d="M0 117v626q0 39 21.5 69t56.5 42v164q0 113 43 213t117.5 175t175 118t213.5 43t213 -43t175 -118t118 -175.5t43 -212.5v-164q35 -12 56 -42t21 -69v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM313 862h627v156q0 66 -24.5 123t-67.5 99t-100.5 66.5 t-120.5 24.5q-66 0 -122 -24.5t-99.5 -66.5t-68 -99.5t-24.5 -122.5v-156zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
72
- <glyph unicode="&#xf024;" d="M0 1382q0 63 45 108.5t109 45.5q63 0 108 -45.5t45 -108.5q0 -41 -20.5 -74.5t-55.5 -56.5v-1212q0 -16 -11 -27.5t-27 -11.5h-78q-16 0 -26.5 11.5t-10.5 27.5v1212q-35 23 -56.5 56.5t-21.5 74.5zM307 416v745q0 33 19.5 66t48.5 49q104 55 188 86t144 45q70 16 124 18 q68 0 124.5 -11t107.5 -29.5t99 -43t100 -51.5q63 -29 145 -33q70 -4 164 15.5t207 87.5q29 16 47 6t18 -43v-748q0 -31 -18.5 -64.5t-46.5 -49.5q-113 -68 -207 -87.5t-164 -15.5q-82 4 -145 33q-51 27 -99.5 51.5t-99.5 43t-107.5 29.5t-124.5 11q-55 -2 -124 -18 q-59 -14 -143.5 -45t-188.5 -88q-29 -16 -48.5 -4t-19.5 45z" />
73
- <glyph unicode="&#xf025;" horiz-adv-x="1916" d="M0 729q0 172 85 324.5t221 266.5t307 180.5t345 66.5t345.5 -66.5t307.5 -180.5t221 -266.5t85 -326.5q0 -182 -78 -350l-27 -60l-174 -26q-27 -104 -110.5 -173t-196.5 -69v-41q0 -16 -12 -27.5t-29 -11.5h-80q-16 0 -27.5 11.5t-11.5 27.5v719q0 16 11.5 28.5 t27.5 12.5h80q16 0 28.5 -12.5t12.5 -28.5v-39q88 0 161 -44t114 -116l39 7q33 90 32 192q0 125 -65.5 233.5t-170 190.5t-232.5 129t-251 47t-250.5 -47t-232 -128t-170 -190.5t-65.5 -232.5q0 -104 32 -194l39 -7q41 72 114 116t161 44v39q0 16 12 28.5t29 12.5h80 q16 0 27 -12.5t11 -28.5v-719q0 -16 -11 -27.5t-27 -11.5h-80q-16 0 -28.5 11.5t-12.5 27.5v41q-55 0 -106.5 18.5t-91.5 50.5t-68.5 76t-40.5 97l-175 26l-26 60q-78 168 -78 352z" />
74
- <glyph unicode="&#xf026;" horiz-adv-x="905" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28z" />
75
- <glyph unicode="&#xf027;" horiz-adv-x="1277" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48z" />
76
- <glyph unicode="&#xf028;" horiz-adv-x="1916" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48zM1285 219q-7 33 11 62q141 225 142 487q0 262 -142 487q-18 29 -11 62t36 49q29 18 61 11t50 -36q82 -131 123.5 -275t41.5 -298q0 -309 -167 -573q-10 -18 -29 -27.5t-37 -9.5q-25 0 -43 12q-29 16 -36 49zM1540 33 q-6 33 12 59q100 154 152.5 325t52.5 351t-52 351t-153 323q-18 29 -12 61.5t35 50.5q29 16 61 10.5t50 -32.5q115 -174 173 -366.5t58 -397.5t-58.5 -397.5t-172.5 -364.5q-10 -18 -29 -27.5t-37 -9.5q-25 0 -45 13q-29 18 -35 51z" />
77
- <glyph unicode="&#xf029;" horiz-adv-x="1536" d="M0 0v698h698v-698h-698zM0 838v698h698v-698h-698zM139 139h420v420h-420v-420zM139 977h420v420h-420v-420zM279 279v141h141v-141h-141zM279 1116v139h141v-139h-141zM838 0v698h417v-139h142v139h139v-419h-420v139h-139v-418h-139zM838 838v698h698v-698h-698z M977 977h420v420h-420v-420zM1116 0v139h139v-139h-139zM1116 1116v139h139v-139h-139zM1397 0v139h139v-139h-139z" />
78
- <glyph unicode="&#xf02a;" d="M0 0v1536h154v-1536h-154zM227 0v1536h37v-1536h-37zM356 0v1536h117v-1536h-117zM545 0v1536h78v-1536h-78zM715 0v1536h76v-1536h-76zM903 0v1536h37v-1536h-37zM1014 0v1536h153v-1536h-153zM1221 0v1536h77v-1536h-77zM1409 0v1536h39v-1536h-39zM1579 0v1536h37 v-1536h-37zM1690 0v1536h153v-1536h-153z" />
79
- <glyph unicode="&#xf02b;" horiz-adv-x="1488" d="M0 961v454q0 49 35 85t86 36h454q51 0 113 -24.5t94 -61.5l672 -748q33 -39 34 -88t-34 -84l-526 -526q-35 -35 -86 -36t-86 36l-670 750q-35 37 -60.5 96t-25.5 111zM197 1223q0 -49 33.5 -83t82.5 -34t83 34t34 83t-34 82.5t-83 33.5t-82.5 -33.5t-33.5 -82.5z" />
80
- <glyph unicode="&#xf02c;" horiz-adv-x="1875" d="M0 961v454q0 49 35 85t86 36h454q25 0 53.5 -6t57.5 -18.5t54.5 -28t41.5 -33.5l670 -748q33 -37 34 -86t-34 -84l-526 -524q-35 -35 -86.5 -37t-83.5 37l-670 746q-35 39 -60.5 98t-25.5 109zM195 1223q0 -47 34.5 -82t83.5 -35q47 0 82 35t35 82q0 49 -35 83.5 t-82 34.5q-49 0 -83.5 -34.5t-34.5 -83.5zM791 1534h174q51 0 112.5 -24.5t93.5 -61.5l670 -748q35 -37 35 -87t-35 -85l-524 -524q-35 -35 -86 -36t-86 36l-12 14l514 514q35 35 34.5 84.5t-34.5 85.5l-670 748q-31 35 -84 56.5t-102 27.5z" />
81
- <glyph unicode="&#xf02d;" horiz-adv-x="1710" d="M10 311q2 16 4 31.5t4 34.5q0 10 -4 20.5t-2 20.5q2 16 15.5 31.5t25.5 35.5q23 37 45.5 90.5t32.5 92.5q4 16 -1 30.5t-1 26.5q4 16 16.5 27.5t20.5 23.5q10 18 21.5 42t21.5 49.5t16 50t8 40.5t-2 33t0 29q6 16 20.5 26.5t24.5 24.5q10 12 21.5 34.5t23 49.5t19.5 52.5 t10 45.5q2 12 -4 24.5t-2 27.5q4 14 18.5 29.5t26.5 31.5q16 25 28.5 58.5t30 61t46 43t77.5 1.5l-2 -4q31 10 54 10h780q78 0 119 -57q41 -53 18 -129l-283 -906q-18 -63 -77.5 -107t-126.5 -44h-893q-10 0 -20.5 -2t-18.5 -12q-12 -20 0 -56q16 -43 60 -75.5t87 -32.5h946 q29 0 57.5 21.5t37.5 47.5l309 987q4 16 5 29.5t-1 28.5q41 -14 61 -43q41 -53 19 -129l-283 -905q-18 -66 -77.5 -109t-127.5 -43h-946q-41 0 -79.5 14.5t-73.5 39t-61.5 58t-41.5 72.5q-25 68 -2 127zM500 961q-10 -39 26 -39h615q16 0 30.5 11t18.5 28l24 75 q4 16 -3 27.5t-23 11.5h-615q-16 0 -31.5 -11t-19.5 -28zM569 1190q-4 -16 3.5 -26.5t23.5 -10.5h614q16 0 30.5 10.5t21.5 26.5l22 78q4 16 -3 27.5t-24 11.5h-614q-16 0 -30.5 -11.5t-20.5 -27.5z" />
82
- <glyph unicode="&#xf02e;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81z" />
83
- <glyph unicode="&#xf02f;" d="M0 39v346q0 47 18.5 89t50 73t73.5 49t89 18h1383q47 0 89 -18t72.5 -49t49 -73t18.5 -89v-346q0 -39 -39 -39h-1765q-39 0 -39 39zM268 193q0 -16 11.5 -26.5t27.5 -10.5h1229q16 0 27.5 10t11.5 27v38q0 16 -11.5 27.5t-27.5 11.5h-1229q-16 0 -27.5 -11t-11.5 -28v-38 zM307 729v731q0 31 22.5 53.5t55.5 22.5h651v-383q0 -49 34 -83t81 -34h385v-307h-1229zM1151 1153v383l385 -383h-385z" />
84
- <glyph unicode="&#xf030;" d="M0 115v1075q0 47 34 82t81 35h366l58 125q18 43 66 73.5t95 30.5h443q47 0 95 -30.5t67 -73.5l57 -125h367q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM442 653q0 -100 38 -187t102.5 -152.5t153 -103.5t186.5 -38t186 38 t152.5 103.5t102.5 152.5t38 187q0 98 -38 186.5t-102.5 153t-152.5 102.5t-186 38t-186.5 -38t-153 -102.5t-102.5 -152.5t-38 -187zM596 653q0 68 25.5 127.5t69.5 103.5t103.5 69.5t127.5 25.5t127 -25.5t103 -69.5t69.5 -103.5t25.5 -127.5t-25.5 -127t-69.5 -104 t-103.5 -70.5t-126.5 -25.5q-68 0 -127.5 25.5t-103.5 70.5t-69.5 104.5t-25.5 126.5z" />
85
- <glyph unicode="&#xf031;" horiz-adv-x="1644" d="M0 0l2 80q10 4 29.5 8t48.5 8q92 18 108 33q16 10 50 68l233 614l277 725h73h53l11 -20l202 -482q33 -78 64 -151.5t59 -145.5q29 -72 52.5 -130t42.5 -103q12 -29 28.5 -70t36.5 -94q23 -66 64 -150q25 -49 34 -57q20 -18 68 -24q25 -2 49.5 -9.5t52.5 -17.5 q6 -37 7 -55v-10.5t-3 -16.5q-43 0 -90 2t-98 6q-53 4 -99 6t-87 2h-80t-53 -2l-199 -10l-57 -2q0 20 1 39.5t3 38.5l129 26q57 14 67 25q12 8 13 27q0 14 -7 30l-47 115l-90 227l-446 2q-12 -29 -37 -96t-66 -178q-23 -63 -22 -84q0 -27 16 -43q14 -10 40 -17.5t63 -13.5 q14 -4 84 -12v-59q0 -16 -2 -27q-35 0 -121 5t-224 16l-49 -9q-43 -8 -83 -11t-81 -3h-20zM549 655q135 -2 216 -4t105 0l29 2q-18 51 -40.5 111.5t-51.5 130.5t-51.5 122t-38.5 87z" />
86
- <glyph unicode="&#xf032;" horiz-adv-x="1419" d="M0 0l2 94q27 6 68 12q39 6 69.5 13.5t55.5 17.5q8 14 13 26.5t7 24.5q6 33 8 81t2 112l-2 498q-2 39 -3 139t-5 266q-4 88 -12 109q-4 8 -13 10q-20 14 -69 16q-23 0 -115 13l-4 84l262 6l383 12h45q8 2 15.5 2h13.5t21.5 -1t39.5 -1h76q92 0 193 -27q18 -4 42.5 -13 t53.5 -26q63 -31 104 -75q45 -47 66 -105q10 -29 15 -58.5t5 -62.5q0 -72 -32 -129q-31 -57 -95 -104q-16 -12 -54 -30.5t-97 -47.5q178 -41 268 -145q92 -104 92 -236q0 -72 -28 -162q-23 -66 -72 -116q-66 -72 -141 -109q-78 -35 -205 -59q-70 -12 -199 -11l-199 5 q-63 2 -138 -2.5t-163 -10.5q-25 -2 -93 -4t-181 -6zM537 1419q0 -12 1 -31.5t3 -44.5q2 -51 4 -119.5t0 -158.5v-98v-78q25 -4 52.5 -6t57.5 -2q176 0 267 65q90 66 90 225q0 113 -86 187q-84 76 -258 76q-53 0 -131 -15zM545 457l4 -271q0 -16 10 -43q74 -33 141 -32 q131 0 220 41q82 39 122 112q18 37 28.5 82t10.5 100q0 113 -43 181q-59 94 -141 125q-80 33 -250 32q-37 0 -61.5 -3t-40.5 -7v-143v-174z" />
87
- <glyph unicode="&#xf033;" horiz-adv-x="1054" d="M0 0l18 84q12 4 32 9t46 11q41 10 71 19.5t50 19.5q29 39 41 103l29 137l57 268l12 64q23 119 41.5 178t18.5 63l30 156l17 64l22 135l9 49v39q-45 23 -148 28q-14 0 -23.5 1.5t-17.5 1.5l21 104l325 -14q31 -2 49.5 -2h26.5q35 0 89 2t132 6q41 4 68.5 6t38.5 2 q-2 -10 -3 -19.5t-3 -19.5q-4 -10 -7.5 -22.5t-7.5 -28.5q-49 -16 -110 -31q-66 -16 -105 -31q-12 -33 -24 -88q-6 -25 -9.5 -45t-5.5 -37q-23 -100 -40 -175.5t-27 -129.5l-64 -311l-39 -158l-43 -235l-14 -45v-10.5t2 -16.5q35 -8 64.5 -13t58.5 -9q4 0 21.5 -2.5 l45.5 -6.5q-2 -18 -3 -32.5t-3 -26.5q-2 -6 -4 -16.5t-6 -22.5q-8 0 -14 -1t-10 -1q-18 -2 -28.5 -2h-14.5h-11.5t-17.5 4q-8 0 -45 4t-105 12l-202 2q-61 0 -181 -12q-39 -4 -63.5 -6t-36.5 -2z" />
88
- <glyph unicode="&#xf034;" d="M0 1151q14 37 34.5 110.5t45.5 184.5q8 33 13 54.5t9 31.5h58q4 -6 6 -10t4 -9q29 -57 41 -71q16 -4 129 -4q35 0 66.5 1t60.5 1l20 2l113 2l213 -2h289l55 10q10 8 27 53q2 6 4 12.5t6 16.5l43 2h10.5t16.5 -2q2 -39 1 -97.5t1 -138.5v-100v-57q0 -14 -1 -27.5t-3 -23.5 q-20 -8 -37 -11.5t-31 -7.5q-27 51 -53 129q-29 82 -37 92q-12 14 -27 21q-10 4 -60 4h-138h-31t-35 -4q-6 -43 -6 -72l2 -151v-334l2 -359v-147q0 -72 10 -117q8 -4 21.5 -8t34.5 -8q4 0 21 -4t50 -13q27 -10 49 -18q4 -20 4 -33.5v-17.5v-11.5t-2 -17.5h-34q-47 0 -88 2 t-76 6t-95.5 6t-148.5 2q-16 0 -57 -4t-109 -10q-29 -2 -45 -3t-24 -1q0 10 -1.5 16.5t-1.5 10.5l-2 24v10q18 31 80 50q94 27 135 49q4 10 6.5 25.5t4.5 31.5q4 68 6 176.5t0 255.5l-4 428q-2 90 -2 142.5t-4 72.5q0 8 -7 15q-4 6 -12 6q-16 4 -63 4h-127q-90 0 -119 -21 q-41 -29 -121 -153q-23 -35 -35 -35q-23 12 -36 23.5t-19 19.5zM1383 1305.5q-5 13.5 14 33.5l184 185q14 12 33 12q14 0 31 -12l184 -185q18 -20 13 -33.5t-34 -13.5h-118v-1048h118q29 0 34 -13.5t-13 -31.5l-184 -187q-16 -12 -33 -12q-16 0 -31 12l-184 187 q-18 18 -13 31.5t31 13.5h121v1048h-121q-27 0 -32 13.5z" />
89
- <glyph unicode="&#xf035;" horiz-adv-x="1536" d="M0 233q0 18 12 31l187 185q18 20 31.5 14t13.5 -33v-121h1048v121q0 27 13.5 33t33.5 -14l185 -185q12 -12 12 -31q0 -18 -12 -30l-185 -187q-20 -18 -33.5 -13t-13.5 34v119h-1048v-119q0 -29 -13.5 -34t-31.5 13l-187 187q-12 12 -12 30zM0 1233q14 29 33.5 87 t44.5 146q6 27 11 43.5t9 26.5h56q8 -12 10 -14q27 -47 37 -58q2 0 35.5 -1t77.5 -1h90.5h74.5h123l19 2h108h203h416l53 6q12 10 24 46l4.5 9l6.5 13h39h28v-188v-80v-45q0 -12 -1 -21.5t-3 -19.5q-33 -10 -63 -15q-25 37 -52 103q-27 59 -34 74q-12 10 -27 14q-6 2 -42 3 t-85 1h-103.5h-97.5h-28.5t-34.5 -2q-2 -18 -3 -32.5t-1 -24.5l4 -445l-2 -119q0 -61 12 -92q12 -6 53 -12q4 0 20.5 -4t45.5 -10q14 -4 26.5 -7.5t22.5 -7.5q2 -16 3 -25.5t1 -13.5t-1 -10t-1 -14h-33q-94 0 -157 6q-66 6 -236 6q-14 0 -53 -3t-105 -7q-27 -2 -43 -3 t-24 -1q0 16 -2 20v21v8q20 27 73 39q90 20 132 41q4 8 6 19t4 26q0 18 1 70.5t1 120t-1 142t-2 139t-2 107.5t-1 47q0 8 -6 13q-2 2 -13 6q-14 2 -59 2h-123q-20 0 -62 -1t-85 -2t-78 -4t-41 -7q-41 -25 -117 -123q-20 -29 -33 -29q-23 10 -35 19.5t-18 15.5z" />
90
- <glyph unicode="&#xf036;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
91
- <glyph unicode="&#xf037;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM78 922v114q0 33 21.5 55.5t54.5 22.5h1536q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-1536 q-33 0 -54.5 21.5t-21.5 54.5zM307 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM385 1343v117q0 31 21.5 53.5t54.5 22.5h921q33 0 55.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-55.5 -22h-921q-33 0 -54.5 22.5t-21.5 52.5z" />
92
- <glyph unicode="&#xf038;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 922v114q0 33 22.5 55.5t54.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536 q-33 0 -55 21.5t-22 54.5zM614 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM768 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
93
- <glyph unicode="&#xf039;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1689 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1689q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-53.5 -22h-1689q-33 0 -55.5 22.5t-22.5 52.5z" />
94
- <glyph unicode="&#xf03a;" d="M0 78v115q0 31 22.5 53t55.5 22h153q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-153q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-153 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-153q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-153q-33 0 -55.5 22.5t-22.5 52.5zM461 78v115q0 31 22.5 53t55.5 22h1228q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 500v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114 q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 922v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1228q-33 0 -55.5 21.5t-22.5 54.5zM461 1343v117q0 31 22.5 53.5t55.5 22.5h1228 q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-53.5 -22h-1228q-33 0 -55.5 22.5t-22.5 52.5z" />
95
- <glyph unicode="&#xf03b;" d="M0 756v75q0 39 39 39h213v154q0 31 16.5 37t38.5 -17l215 -215q16 -16 17 -36q0 -18 -17 -35l-215 -215q-23 -23 -39 -17t-16 39v152h-213q-39 0 -39 39zM614 39v1458q0 39 39 39h76q39 0 39 -39v-1458q0 -39 -39 -39h-76q-39 0 -39 39zM922 78v115q0 31 22.5 53t54.5 22 h768q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-768q-33 0 -55 22.5t-22 55.5zM922 500v114q0 33 22.5 55.5t54.5 22.5h615q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-615q-33 0 -55 22.5t-22 55.5zM922 922v114 q0 33 22.5 55.5t54.5 22.5h691q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-691q-33 0 -55 21.5t-22 54.5zM922 1343v117q0 31 22.5 53.5t54.5 22.5h537q33 0 55.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-55.5 -22h-537q-33 0 -55 22.5t-22 52.5z" />
96
- <glyph unicode="&#xf03c;" d="M0 78v115q0 31 22.5 53t53.5 22h768q33 0 55.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t53.5 22.5h614q33 0 55.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-55.5 -22.5h-614 q-31 0 -53.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t53.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-31 0 -53.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t53.5 22.5h538q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-538q-31 0 -53.5 22.5t-22.5 52.5zM1075 39v1458q0 39 39 39h76q16 0 27.5 -11.5t11.5 -27.5v-1458q0 -16 -11.5 -27.5t-27.5 -11.5h-76q-39 0 -39 39zM1305 743q0 16 14 35l217 215q23 23 38 17t15 -39v-152h215q16 0 27.5 -11t11.5 -28v-75q0 -16 -11 -27.5 t-28 -11.5h-215v-154q0 -31 -15 -38t-38 15l-217 218q-14 18 -14 36z" />
97
- <glyph unicode="&#xf03d;" d="M0 324v768q0 47 18.5 89t50 72.5t73.5 49t89 18.5h768q47 0 89 -18.5t73 -49t49.5 -72.5t18.5 -89v-240l483 471q23 23 55 23q13 -1 29 -7q47 -20 47 -69v-1127q0 -49 -47 -69q-16 -6 -29 -6q-33 0 -55 22l-483 471v-237q0 -47 -18.5 -89t-49.5 -74t-72.5 -50.5 t-89.5 -18.5h-768q-47 0 -89 18.5t-73.5 50.5t-50 73.5t-18.5 89.5z" />
98
- <glyph unicode="&#xf03e;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1228h-1536v-1228zM307 307v105l277 360l188 -156l354 537l410 -424v-422h-1229zM307 1073q0 66 45 111t111 45q63 0 108 -45 t45 -111q0 -63 -45 -108t-108 -45q-66 0 -111 45t-45 108z" />
99
- <glyph unicode="&#xf040;" horiz-adv-x="1536" d="M0 0l137 418l867 866l280 -280l-866 -867zM287 407.5q0 -12.5 10 -22.5q8 -8 22 -8q12 0 21 8l690 690q20 20 0 43q-10 10 -22.5 10t-20.5 -10l-690 -688q-10 -10 -10 -22.5zM1102 1382l119 119q35 35 84 35t84 -35l57 -55l55 -57q35 -35 35 -84.5t-35 -83.5l-119 -119z " />
100
- <glyph unicode="&#xf041;" horiz-adv-x="1128" d="M0 1001q0 117 44 220.5t121 180.5t180.5 121t219.5 44q117 0 219.5 -44t179 -121t120.5 -180.5t44 -220.5q0 -84 -24.5 -159.5t-65.5 -143.5l-379 -661q-41 -68 -95 -68t-93 68l-381 663q-41 68 -65.5 143t-24.5 158zM285 1001q0 -57 21.5 -108t60.5 -89t89 -59.5 t109 -21.5q57 0 108.5 21.5t89.5 59.5t59.5 89t21.5 108t-21.5 108.5t-59.5 90.5t-89 60.5t-109 21.5q-59 0 -109 -21.5t-89 -60.5t-60.5 -90t-21.5 -109z" />
101
- <glyph unicode="&#xf042;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44v1118q-117 0 -218.5 -44 t-177 -120t-119.5 -177t-44 -218z" />
102
- <glyph unicode="&#xf043;" horiz-adv-x="1130" d="M0 535q0 86 23.5 161.5t66.5 141.5q20 33 69.5 99.5t108 154.5t113.5 193.5t90 217.5q10 35 37 51.5t57 12.5q31 4 57.5 -12.5t36.5 -51.5q33 -113 89.5 -218t115 -193t107.5 -154.5t69 -99.5q43 -66 66.5 -141.5t23.5 -161.5q0 -117 -44 -220.5t-120.5 -180.5t-180 -121 t-220.5 -44t-220 44t-180 121t-121 180.5t-44 220.5zM248 410q0 -59 41 -100.5t100 -41.5t100 41t41 101q0 43 -22 75q-6 8 -18.5 24.5t-26.5 39t-28.5 48.5t-22.5 54q-4 20 -23 17q-18 4 -24 -17q-8 -29 -21.5 -54.5t-28 -48t-27 -38.5t-18.5 -25q-23 -33 -22 -75z" />
103
- <glyph unicode="&#xf044;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q4 0 10.5 -1t10.5 -1l-191 -191h-905q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v445l193 192v-637q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5 h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM631 324l108 329l652 652l221 -222l-651 -651zM866 629q6 -8 17 -8q10 0 16 8l512 510q18 18 0 35q-18 16 -35 0l-510 -510q-18 -18 0 -35zM1501 1415l92 94q29 29 68 29t65 -29l46 -45l45 -45 q27 -29 27.5 -66.5t-27.5 -66.5l-95 -92z" />
104
- <glyph unicode="&#xf045;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h836q-6 -31 -6 -63v-52q-164 -20 -310 -78h-520q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v111q16 10 31.5 21.5t32.5 27.5l129 127v-287q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 388.5v37.5q0 166 56.5 312.5t173 256t293.5 173t419 65.5v231q0 57 28.5 69.5t69.5 -28.5l392 -391q27 -25 26 -65q0 -39 -26 -64l-392 -391q-41 -41 -69.5 -28.5 t-28.5 69.5v260q-207 0 -364.5 -43t-266 -116.5t-170 -174t-77.5 -215.5q-4 -27 -31 -27q-25 0 -29 27q-4 23 -4 42.5z" />
105
- <glyph unicode="&#xf046;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q27 0 52 -6l-187 -187h-940q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v326l193 192v-518q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075 q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 966.5q0 32.5 23 55.5l98 98q23 23 55.5 23t54.5 -23l340 -340l654 656q23 23 56.5 22.5t55.5 -22.5l99 -99q23 -23 22.5 -55.5t-22.5 -54.5l-711 -711l-98 -98q-23 -23 -55.5 -23t-55.5 23l-100 98l-393 395 q-23 23 -23 55.5z" />
106
- <glyph unicode="&#xf047;" horiz-adv-x="1597" d="M0 768q0 25 18 43l256 256q27 27 45.5 19.5t18.5 -46.5v-170h360v359h-172q-37 0 -45 18.5t19 44.5l256 256q18 18 43 19q25 0 43 -19l256 -256q27 -27 19.5 -45t-46.5 -18h-172v-359h361v170q0 39 18 46.5t45 -19.5l256 -256q18 -18 18 -43t-18 -43l-256 -256 q-27 -27 -45 -19.5t-18 46.5v176h-361v-365h172q39 0 47 -18.5t-20 -44.5l-256 -256q-18 -18 -43 -19q-25 0 -43 19l-256 256q-27 27 -20 45t46 18h172v365h-360v-176q0 -39 -18.5 -46.5t-45.5 19.5l-256 256q-18 18 -18 43z" />
107
- <glyph unicode="&#xf048;" horiz-adv-x="1075" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45z" />
108
- <glyph unicode="&#xf049;" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45zM1075.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705q-16 18 -16.5 45z" />
109
- <glyph unicode="&#xf04a;" horiz-adv-x="1536" d="M0 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44zM768 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44z" />
110
- <glyph unicode="&#xf04b;" horiz-adv-x="1349" d="M0 70v1396q0 39 35 60q37 23 69 0l1211 -697q35 -25 35 -61q0 -37 -35 -61l-1211 -697q-16 -10 -34 -10t-35 10q-35 20 -35 60z" />
111
- <glyph unicode="&#xf04c;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489q-29 0 -49.5 20.5t-20.5 49.5zM907 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489 q-29 0 -49.5 20.5t-20.5 49.5z" />
112
- <glyph unicode="&#xf04d;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5z" />
113
- <glyph unicode="&#xf04e;" horiz-adv-x="1536" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57z" />
114
- <glyph unicode="&#xf050;" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM1536 76 q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382z" />
115
- <glyph unicode="&#xf051;" horiz-adv-x="1075" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5 v-1382z" />
116
- <glyph unicode="&#xf052;" horiz-adv-x="1536" d="M0 70v198q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-198q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5zM6 594q-18 43 14 76l699 698q20 20 49 20.5t49 -20.5l699 -698q33 -33 14 -76q-16 -43 -64 -43h-1396q-47 0 -64 43z" />
117
- <glyph unicode="&#xf053;" horiz-adv-x="964" d="M0 765q0 38 29 66l671 674q29 29 68 29t68 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-68 29l-671 673q-29 29 -29 67z" />
118
- <glyph unicode="&#xf054;" horiz-adv-x="964" d="M0 194.5q0 38.5 29 67.5l508 508l-508 502q-29 29 -29 66.5t29 66.5l100 102q29 29 68 29t67 -29l672 -673q29 -29 29 -68t-29 -68l-672 -671q-29 -29 -67.5 -29t-67.5 29l-100 100q-29 29 -29 67.5z" />
119
- <glyph unicode="&#xf055;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h313v-344q0 -33 33 -32h164q33 0 32 32v344h314 q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5t-22.5 9.5h-314v346q0 33 -32 32h-164q-33 0 -33 -32v-346h-313q-33 0 -33 -33v-158z" />
120
- <glyph unicode="&#xf056;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h856q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5 t-22.5 9.5h-856q-33 0 -33 -33v-158z" />
121
- <glyph unicode="&#xf057;" horiz-adv-x="1597" d="M0 770q0 154 58.5 301.5t174.5 263.5q117 117 264.5 175.5t301 58.5t301 -58.5t264.5 -175.5t175 -264t58 -301t-58 -301t-175 -264t-264.5 -175.5t-301 -58.5t-301 58.5t-264.5 175.5t-175 264t-58 301zM385 505q0 -13 10 -24l115 -116q10 -10 23.5 -10.5t23.5 10.5 l244 243l219 -221q10 -10 23.5 -10t23.5 10l113 113q23 23 0 47l-222 219l246 246q23 23 0 47l-117 115q-25 25 -47 0l-243 -244l-222 221q-10 10 -23 10t-24 -10l-110 -113q-25 -23 0 -47l219 -219l-242 -244q-10 -10 -10 -23z" />
122
- <glyph unicode="&#xf058;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 718q0 -20 14 -34l319 -319q14 -14 38 -24.5t44 -10.5h56q20 0 43.5 10 t38.5 25l550 550q14 14 14.5 34t-14.5 34l-104 107q-16 14 -35.5 14t-34.5 -14l-452 -453q-14 -14 -33.5 -14t-34.5 14l-221 221q-14 14 -33.5 14t-36.5 -14l-104 -106q-14 -14 -14 -34z" />
123
- <glyph unicode="&#xf059;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM532 1100l95 -115q4 -8 20 -12q12 0 23 6l10 8t27.5 17.5t39 16.5t46.5 7 q41 0 69.5 -22.5t28.5 -57.5q0 -37 -24.5 -64.5t-61.5 -60.5q-23 -18 -46.5 -40.5t-43 -51.5t-31.5 -63.5t-12 -79.5v-64q0 -12 9 -21t21 -9h164q12 0 20.5 9t8.5 21v51q0 39 25.5 66.5t62.5 60.5q25 20 49.5 46t46 57t34.5 69.5t13 90.5q0 68 -27.5 121t-73.5 87.5 t-103.5 53t-114.5 18.5q-63 0 -113.5 -16.5t-85.5 -35.5t-53 -35.5t-20 -18.5q-16 -16 -3 -39zM672 252q0 -12 9 -21.5t21 -9.5h164q12 0 20.5 9.5t8.5 21.5v156q0 12 -8 21t-21 9h-164q-12 0 -21 -9t-9 -21v-156z" />
124
- <glyph unicode="&#xf05a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM573 858q0 -29 29 -29h86v-409h-78q-12 0 -21 -8.5t-9 -20.5v-139q0 -12 9 -21.5 t21 -9.5h402q12 0 20 9.5t8 21.5v139q0 29 -28 29h-78v577q0 12 -8 21.5t-21 9.5h-303q-12 0 -20.5 -9t-8.5 -22v-139zM686 1151q0 -12 9.5 -21.5t21.5 -9.5h188q12 0 20.5 9.5t8.5 21.5v166q0 29 -29 29h-188q-12 0 -21.5 -8.5t-9.5 -20.5v-166z" />
125
- <glyph unicode="&#xf05b;" horiz-adv-x="1536" d="M0 692v154q0 16 11.5 26.5t27.5 10.5h164q18 84 59 158.5t99.5 133t133 99.5t158.5 59v164q0 39 39 39h154q16 0 26.5 -11.5t10.5 -27.5v-164q84 -18 158.5 -59t133 -99.5t99.5 -133t59 -158.5h164q16 0 27.5 -10.5t11.5 -26.5v-154q0 -39 -39 -39h-164 q-18 -84 -59 -158.5t-99.5 -133t-133 -99.5t-158.5 -59v-164q0 -16 -10.5 -27.5t-26.5 -11.5h-154q-39 0 -39 39v164q-84 18 -158.5 59t-133 99.5t-99.5 133t-59 158.5h-164q-39 0 -39 39zM365 653q29 -106 105.5 -183t182.5 -105v174q0 16 11.5 26t27.5 10h154 q16 0 26.5 -10t10.5 -26v-174q106 29 183 105.5t105 182.5h-172q-39 0 -38 39v154q0 16 11 26.5t27 10.5h172q-29 106 -105.5 183t-182.5 105v-172q0 -16 -10.5 -27t-26.5 -11h-154q-39 0 -39 38v172q-106 -29 -183 -105.5t-105 -182.5h174q16 0 26 -10.5t10 -26.5v-154 q0 -16 -10 -27.5t-26 -11.5h-174z" />
126
- <glyph unicode="&#xf05c;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM451 573.5q0 16.5 12 28.5l166 166l-166 166q-12 12 -12 28.5t12 28.5l112 113q29 29 58 0l166 -166l166 166q29 29 57 0l113 -113q29 -29 0 -57l-166 -166l166 -166 q29 -29 0 -57l-113 -113q-12 -12 -28.5 -12t-28.5 12l-166 166l-166 -166q-12 -12 -28.5 -12t-29.5 12l-112 113q-12 12 -12 28.5z" />
127
- <glyph unicode="&#xf05d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM332 717.5q0 17.5 10 27.5l115 115q10 10 27.5 10t27.5 -10l178 -180q29 -25 58 0l337 340q10 10 27.5 10t28.5 -10l114 -115q10 -10 10.5 -27.5t-10.5 -27.5l-409 -410 q-12 -12 -32.5 -20t-37.5 -8h-114q-16 0 -37 8t-33 20l-250 250q-10 10 -10 27.5z" />
128
- <glyph unicode="&#xf05e;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -84 23.5 -160t66.5 -141l770 770q-66 43 -141.5 66.5t-159.5 23.5 q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM498 297q66 -41 141.5 -64.5t159.5 -23.5q117 0 218 44t177 120t120 177t44 218q0 84 -23.5 160t-64.5 141z" />
129
- <glyph unicode="&#xf060;" horiz-adv-x="1536" d="M0 768q0 39 29 68l671 673q29 29 68 29t68 -29l100 -100q29 -29 29 -67.5t-29 -67.5l-338 -338h842q41 0 68.5 -27.5t27.5 -68.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-844l338 -338q29 -29 29 -67.5t-29 -67.5l-100 -100q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68 z" />
130
- <glyph unicode="&#xf061;" horiz-adv-x="1536" d="M0 698v144q0 39 27.5 66.5t66.5 27.5h844l-338 338q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t68 -29l671 -673q29 -29 29 -67t-29 -67l-671 -673q-29 -29 -68 -29t-68 29l-100 100q-29 29 -29 68t29 67l338 338h-844q-39 0 -66.5 27.5t-27.5 68.5z" />
131
- <glyph unicode="&#xf062;" horiz-adv-x="1536" d="M-1 768q-1 39 28 68l673 671q29 29 68 29t68 -29l671 -671q29 -29 29 -68t-29 -68l-100 -100q-29 -29 -66.5 -29t-66.5 29l-340 338v-844q0 -39 -27.5 -66.5t-66.5 -27.5h-144q-41 0 -67.5 27.5t-26.5 66.5v844l-338 -338q-29 -29 -67.5 -29t-67.5 29l-100 100 q-29 29 -30 68z" />
132
- <glyph unicode="&#xf063;" horiz-adv-x="1536" d="M0 766q0 39 29 68l100 100q29 29 68 29t67 -29l338 -338v844q0 39 27.5 66.5t66.5 27.5h144q41 0 67.5 -27.5t26.5 -66.5v-844l340 338q29 29 66.5 29t66.5 -29l102 -100q29 -29 29 -68t-29 -68l-673 -671q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68z" />
133
- <glyph unicode="&#xf064;" d="M0 135q0 209 71.5 393.5t218 322.5t371 219t531.5 83v293q0 72 36 87t89 -36l491 -493q35 -33 35 -82q0 -47 -35 -82l-491 -494q-51 -51 -88 -35.5t-37 86.5v330q-262 -2 -461 -56.5t-336 -147.5t-215 -219t-98 -271q-4 -33 -37 -33h-2q-33 0 -37 33q-6 51 -6 102z" />
134
- <glyph unicode="&#xf065;" horiz-adv-x="1536" d="M0 86v522q0 53 26.5 64.5t65.5 -25.5l166 -166l274 275q12 12 31 12t33 -12l160 -160q12 -14 12 -32.5t-12 -31.5l-275 -274l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-37 0 -61 25q-27 27 -27 61zM768 972.5q0 18.5 12 31.5l275 274l-166 166q-39 39 -27 65.5t66 26.5 h520q37 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 25.5l-166 166l-274 -273q-12 -14 -31 -14t-33 14l-160 158q-12 14 -12 32.5z" />
135
- <glyph unicode="&#xf066;" horiz-adv-x="1536" d="M0 202.5q0 18.5 12 33.5l275 272l-166 166q-39 39 -27 65.5t66 26.5h520q38 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 27.5l-166 166l-274 -275q-12 -14 -31 -14t-33 14l-160 160q-12 12 -12 30.5zM768 854v522q0 53 26.5 64.5t65.5 -27.5l166 -166l274 275 q12 14 31 14t33 -14l160 -160q12 -12 12 -30.5t-12 -33.5l-275 -272l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-41 0 -61 25q-27 27 -27 61z" />
136
- <glyph unicode="&#xf067;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h508v506q0 41 26.5 68.5t67.5 27.5h144q39 0 66.5 -27.5t27.5 -66.5v-508h508q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-508v-506q0 -41 -27.5 -68.5t-66.5 -27.5h-144q-39 0 -66.5 27.5t-27.5 66.5v508 h-506q-41 0 -68.5 26.5t-27.5 67.5z" />
137
- <glyph unicode="&#xf068;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h1348q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-1346q-41 0 -68.5 26.5t-27.5 67.5z" />
138
- <glyph unicode="&#xf069;" horiz-adv-x="1427" d="M2 1018q-10 37 10 72l72 124q20 35 58 44.5t73 -9.5l332 -192v383q0 41 27.5 68.5t68.5 27.5h141q41 0 69 -27.5t28 -66.5v-385l331 192q35 18 73 9t58 -44l70 -124q20 -35 11 -72t-44 -57l-333 -193l333 -193q35 -20 44.5 -57t-9.5 -72l-72 -124q-20 -35 -58 -44.5 t-73 9.5l-331 192v-383q0 -41 -28 -68.5t-69 -27.5h-141q-41 0 -68.5 27.5t-27.5 66.5v385l-332 -192q-35 -20 -73 -10t-58 45l-72 124q-18 35 -9 72t44 57l334 193l-334 193q-35 20 -45 57z" />
139
- <glyph unicode="&#xf06a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM672 1274l14 -739q4 -29 31 -29h162q12 0 21 8t9 21l17 739q0 10 -8 22q-8 8 -23 9 h-193q-14 0 -22 -9q-8 -12 -8 -22zM680 236q0 -12 8 -21.5t21 -9.5h180q12 0 21.5 9t9.5 22v174q0 12 -9.5 21t-21.5 9h-180q-12 0 -20.5 -9t-8.5 -21v-174z" />
140
- <glyph unicode="&#xf06b;" horiz-adv-x="1880" d="M0 588v391q0 16 11.5 27.5t27.5 11.5h539q-57 0 -107.5 21.5t-87.5 58.5t-58.5 87t-21.5 107t21.5 107.5t58.5 87.5t87 58.5t108 21.5q61 0 115.5 -24.5t88.5 -69.5l158 -203l158 203q35 45 89 69.5t116 24.5q57 0 107 -21.5t87 -58.5t58.5 -87t21.5 -108 q0 -57 -21.5 -107t-58.5 -87t-87 -58.5t-107 -21.5h538q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11 -27.5t-28 -11.5h-117v-432q0 -47 -34.5 -82t-83.5 -35h-1332q-49 0 -82.5 35t-33.5 82v432h-119q-16 0 -27.5 11t-11.5 28zM461 1292q0 -49 33.5 -82.5t83.5 -33.5h237 l-151 196q-10 10 -32 24.5t-54 14.5q-49 0 -83 -35t-34 -84zM743 221q0 -33 24 -56.5t56 -23.5h234q33 0 56.5 23.5t23.5 56.5v797h-394v-797zM1065 1176h238q49 0 82.5 33.5t33.5 82.5t-33.5 84t-82.5 35q-33 0 -54.5 -14.5t-31.5 -24.5z" />
141
- <glyph unicode="&#xf06c;" horiz-adv-x="1916" d="M6 135q20 53 56 89t71 65q29 23 50.5 43t27.5 43q2 6 0 12t-10 25q-6 12 -11.5 27.5t-9.5 35.5q-25 160 13 295t120 242.5t195 185.5t235 121q82 29 179.5 34t203.5 7q61 0 127 2t127.5 11t113.5 28.5t85 54.5q20 20 38.5 41t38 36t43 24.5t58.5 9.5q23 0 42.5 -11.5 t29.5 -31.5q66 -133 83 -281.5t-18 -322.5q-90 -487 -579 -740q-231 -123 -467 -123q-154 0 -307 54q-23 8 -45.5 20t-44.5 25q-29 16 -57.5 30.5t-49.5 14.5q-10 -2 -23.5 -17.5t-27.5 -35t-26.5 -41t-20.5 -33.5q-14 -23 -26.5 -41.5t-22.5 -32.5q-25 -31 -64 -31h-4 q-29 2 -49.5 12.5t-33.5 24.5t-20.5 28.5t-9.5 22.5q-27 37 -10 78zM401 507.5q2 -32.5 29 -54.5q20 -18 51 -19q37 0 62 27q90 102 181 175t191.5 117t212 62t242.5 14q33 -4 57.5 19.5t26.5 56.5q2 35 -20.5 58.5t-57.5 25.5q-147 6 -277 -16.5t-247 -73.5t-223.5 -133 t-206.5 -199q-23 -27 -21 -59.5z" />
142
- <glyph unicode="&#xf06d;" horiz-adv-x="1445" d="M0 442q0 123 63.5 254t174.5 238q10 16 33.5 13t31.5 -21q4 -16 0 -29q-8 -35 -14 -84t-4 -101.5t13 -101.5t38 -84q31 -37 78 -49q-49 154 -40 293t49 259t101.5 217t118.5 167t98 106.5t43 39.5q25 18 47 0q10 -8 13.5 -21.5t-0.5 -24.5q0 -2 -15.5 -42.5t-21.5 -102 t7 -134.5t71 -136q37 -43 67.5 -85t52 -93.5t34 -120t12.5 -162.5q0 -33 -31 -39q-12 -2 -24.5 4t-16.5 19q-14 31 -42 49t-63 18q-47 0 -79.5 -33.5t-32.5 -81.5q0 -121 156 -120q98 0 153 63q37 43 53.5 101.5t20.5 114.5t2 102.5t-4 62.5q-6 12 0 29q8 18 31.5 21 t35.5 -13q111 -106 173.5 -237.5t62.5 -254.5q0 -109 -51.5 -195.5t-145.5 -148t-228 -95.5t-298 -34t-298 34t-228.5 95.5t-145.5 148.5t-51 195z" />
143
- <glyph unicode="&#xf06e;" d="M0 722q0 44 25 83q78 125 178 224t216 168t242.5 104.5t260.5 35.5q135 0 262 -35.5t241.5 -103.5t215 -167t180.5 -226q23 -39 22.5 -83t-22.5 -81q-80 -127 -180.5 -226.5t-215 -167t-241.5 -103t-262 -35.5q-133 0 -260 35.5t-243 104t-216.5 168t-177.5 224.5 q-25 37 -25 81zM154 723q66 -104 149.5 -190.5t182 -145.5t208 -92t228.5 -33t228.5 33t207.5 92t182 145t150 191q-80 129 -187.5 226.5t-236.5 156.5q51 -59 79.5 -133t28.5 -160q0 -96 -35.5 -179t-99 -146.5t-147.5 -99.5t-179 -36q-96 0 -179 36t-146.5 99.5t-99 146.5 t-35.5 179q0 78 25.5 148.5t68.5 128.5q-117 -59 -217.5 -152.5t-175.5 -214.5zM614 813q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5z" />
144
- <glyph unicode="&#xf070;" d="M0 767q0 44 25 83q78 125 178 224.5t216 168t242.5 104t260.5 35.5q53 0 105 -7t103 -17l89 158q8 14 24 18q12 6 29 -2l133 -76q14 -8 19.5 -23.5t-3.5 -29.5l-774 -1383q-6 -14 -22 -18q-4 -2 -11 -2q-6 0 -18 4l-135 76q-14 8 -18.5 23.5t3.5 29.5l66 115 q-145 68 -269 178.5t-218 259.5q-25 37 -25 81zM154 768q82 -131 191.5 -229.5t240.5 -157.5l57 104q-86 63 -138 159.5t-52 213.5q0 78 25.5 148.5t68.5 130.5q-117 -61 -217.5 -153.5t-175.5 -215.5zM614 858q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131 t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5zM928 154l88 159q209 25 382 145t292 310q-109 170 -263 283l76 137q92 -66 172 -150t146 -188q23 -39 22.5 -83t-22.5 -81q-160 -254 -392.5 -392 t-500.5 -140zM1081 430l285 510q4 -20 6 -39.5t2 -42.5q0 -74 -21.5 -140.5t-60.5 -121.5t-93 -98t-118 -68z" />
145
- <glyph unicode="&#xf071;" horiz-adv-x="1775" d="M0 92q0 20 6 39t17 35l768 1331q16 27 39.5 48.5t56.5 21.5t56.5 -21.5t39.5 -48.5l770 -1331q10 -16 16.5 -34.5t6.5 -39.5q0 -49 -38 -70.5t-81 -21.5h-1538q-43 0 -81 21.5t-38 70.5zM770 1114l12 -633q0 -14 10.5 -24.5t24.5 -10.5h139q14 0 24.5 10.5t10.5 24.5 l15 633q0 14 -10.5 24.5t-24.5 10.5h-166q-16 0 -25.5 -10.5t-9.5 -24.5zM776 168q0 -16 10.5 -25.5t24.5 -9.5h154q35 0 34 35v147q0 16 -9 26.5t-25 10.5h-154q-14 0 -24.5 -10t-10.5 -27v-147z" />
146
- <glyph unicode="&#xf072;" horiz-adv-x="1597" d="M0 541v4q0 31 23 57l30 29q20 25 56 24q8 0 10 -2l280 -32q39 63 93.5 134.5t125.5 151.5l-583 457q-31 25 -31 59v4q0 31 23 58l57 57q27 23 57 23h13.5t13.5 -4l803 -293l151 149q70 70 161 110t167 40q72 0 109 -37q20 -18 28 -46t8 -63q0 -76 -38.5 -167t-110.5 -160 l-150 -152l293 -803q6 -12 6 -26q0 -33 -24 -58l-58 -57q-23 -25 -57 -25h-4q-35 4 -59 31l-455 586q-82 -72 -153.5 -126t-135.5 -93l35 -281v-10q0 -33 -22 -55l-31 -31q-23 -23 -58 -23h-4q-39 4 -59 31l-205 272l-274 207q-29 25 -31 60z" />
147
- <glyph unicode="&#xf073;" horiz-adv-x="1566" d="M0 117v1147q0 47 35 81.5t82 34.5h39v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t59.5 -40t33 -56.5t10.5 -62v-13h49v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t60.5 -40t34 -56.5t10.5 -62v-13h49v13q0 31 10.5 62.5t33 56t59 40t90.5 15.5 q53 0 90 -15.5t59.5 -40t32.5 -56.5t10 -62v-13h39q47 0 82 -34.5t35 -81.5v-1147q0 -47 -35 -82t-82 -35h-1333q-47 0 -82 35t-35 82zM158 158h282v250h-282v-250zM158 446h282v252h-282v-252zM158 737h282v252h-282v-252zM272 1165q0 -57 76 -57t76 57v228q0 57 -76 57 t-76 -57v-228zM479 158h285v250h-285v-250zM479 446h285v252h-285v-252zM479 737h285v252h-285v-252zM709 1165q0 -31 16 -44t57 -13t58.5 13.5t17.5 43.5v228q0 29 -17.5 43t-58.5 14t-57 -14.5t-16 -42.5v-228zM803 158h284v250h-284v-250zM803 446h284v252h-284v-252z M803 737h284v252h-284v-252zM1126 158h283v250h-283v-250zM1126 446h283v252h-283v-252zM1126 737h283v252h-283v-252zM1143 1165q0 -57 76 -57t75 57v228q0 57 -75 57q-76 0 -76 -57v-228z" />
148
- <glyph unicode="&#xf074;" d="M0 252v154q0 16 11.5 27t27.5 11h219q51 0 99.5 31t93.5 83t90 119.5t90 139.5q55 88 114.5 175t127 156t147.5 110.5t180 41.5h203v185q0 41 24.5 49t59.5 -21l334 -278q23 -18 22 -45q0 -29 -22 -47l-334 -277q-35 -29 -59.5 -20.5t-24.5 49.5v174h-203 q-53 0 -100 -31.5t-93 -84t-91.5 -120t-90.5 -139.5q-55 -88 -113.5 -174t-126 -154.5t-148.5 -110.5t-179 -42h-219q-16 0 -27.5 11.5t-11.5 27.5zM0 1108v154q0 39 39 38h219q68 0 127 -20t111.5 -56t97.5 -84t88 -104q-61 -90 -117 -178q-4 -8 -9 -14t-9 -15 q-70 102 -139.5 172t-149.5 70h-219q-16 0 -27.5 10.5t-11.5 26.5zM778 481q29 41 56.5 85t56.5 87q4 10 10 17.5t10 17.5q70 -102 139.5 -170.5t149.5 -68.5h203v190q0 41 24.5 49t59.5 -20l334 -277q23 -18 22 -47q0 -27 -22 -45l-334 -279q-35 -29 -59.5 -20.5 t-24.5 49.5v168h-203q-68 0 -127 20.5t-110.5 56.5t-97.5 84t-87 103z" />
149
- <glyph unicode="&#xf075;" horiz-adv-x="1916" d="M0 866q0 145 76 272.5t206 222.5t303.5 150.5t372.5 55.5t373 -55.5t304 -150.5t206 -222t76 -273q0 -145 -76 -272t-206 -222.5t-304 -150.5t-373 -55q-92 0 -180 12q-176 -139 -411 -192q-25 -4 -50.5 -8.5t-54.5 -8.5q-16 -2 -27.5 6.5t-15.5 24.5t5 26.5t20 20.5 q23 23 43 44.5t36.5 51t30 69.5t23.5 97q-174 98 -275.5 241.5t-101.5 315.5z" />
150
- <glyph unicode="&#xf076;" horiz-adv-x="1566" d="M0 621v288q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11t12.5 -28v-288q0 -29 22.5 -60t63.5 -58.5t98.5 -45t128.5 -17.5q70 0 128.5 17.5t99.5 45t63.5 58.5t22.5 60v288q0 39 39 39h391q16 0 27.5 -11t11.5 -28v-288q0 -135 -61.5 -254t-168 -207t-249 -139.5 t-304.5 -51.5q-164 0 -306 51.5t-248.5 139.5t-168 206.5t-61.5 254.5zM0 1106v391q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11.5t12.5 -27.5v-391q0 -16 -12.5 -27.5t-28.5 -11.5h-391q-16 0 -27.5 11.5t-11.5 27.5zM1098 1106v391q0 16 11 27.5t28 11.5h391 q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11.5 -27.5t-27.5 -11.5h-391q-39 0 -39 39z" />
151
- <glyph unicode="&#xf077;" horiz-adv-x="1536" d="M-1 355.5q-1 37.5 28 66.5l673 674q29 29 68 28.5t68 -28.5l671 -674q29 -29 29 -67t-29 -66l-100 -103q-29 -29 -68 -28.5t-67 28.5l-508 510l-500 -510q-29 -29 -67.5 -28.5t-67.5 28.5l-100 103q-29 29 -30 66.5z" />
152
- <glyph unicode="&#xf078;" horiz-adv-x="1536" d="M0 918.5q0 37.5 29 66.5l100 102q29 29 68 29t67 -29l508 -509l500 509q29 29 67.5 29t67.5 -29l100 -102q29 -29 30 -66.5t-28 -66.5l-673 -674q-29 -29 -68 -28.5t-68 28.5l-671 674q-29 29 -29 66.5z" />
153
- <glyph unicode="&#xf079;" horiz-adv-x="1916" d="M2.5 1038.5q-12.5 30.5 28.5 75.5l385 424q25 29 63 29q39 0 64 -29l385 -424q41 -45 28.5 -75.5t-67.5 -30.5h-250v-680h174q6 -10 12 -19.5t17 -19.5l252 -281h-695q-33 0 -56.5 23.5t-23.5 56.5v920h-249q-55 0 -67.5 30.5zM823 1526h695q33 0 56 -22.5t23 -57.5v-918 h250q55 0 67.5 -30.5t-28.5 -75.5l-385 -424q-25 -29 -63 -29q-39 0 -64 29l-385 424q-41 45 -28.5 75.5t67.5 30.5h250v678h-174q-6 10 -12.5 20.5t-14.5 20.5z" />
154
- <glyph unicode="&#xf07a;" d="M0 1421v76q0 39 39 39h231q16 0 38 -4t36 -8q6 -4 14.5 -14.5t15.5 -23.5t12 -26.5t7 -21.5l27 -125h1347q35 0 58 -27t16 -59l-108 -578q-6 -25 -26.5 -42t-49.5 -17h-1084l35 -168q4 -16 17.5 -26.5t29.5 -10.5h856q16 0 27.5 -11.5t11.5 -27.5v-78q0 -16 -11 -26.5 t-28 -10.5h-163h-652h-104q-16 0 -36.5 3.5t-35.5 9.5q-6 2 -14 13t-15.5 24.5t-12.5 27t-7 21.5l-215 1016q-4 16 -17.5 26t-29.5 10h-170q-39 0 -39 39zM582 115q0 47 33.5 81.5t80.5 34.5q49 0 83 -34.5t34 -81.5t-34 -81t-83 -34q-47 0 -80.5 34t-33.5 81zM1233 115 q0 47 33.5 81.5t81.5 34.5q47 0 80.5 -34.5t33.5 -81.5t-33.5 -81t-80.5 -34t-81 34t-34 81z" />
155
- <glyph unicode="&#xf07b;" d="M0 115v1306q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h693q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81z" />
156
- <glyph unicode="&#xf07c;" d="M0 379v1042q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h443q47 0 80.5 -35t33.5 -82v-221h-1228q-37 0 -72 -12.5t-65.5 -34t-53 -51t-35.5 -64.5zM43 0l246 760q6 23 30.5 39t47.5 16h1476l-260 -758q-6 -23 -30.5 -40t-47.5 -17h-1462z" />
157
- <glyph unicode="&#xf07d;" horiz-adv-x="798" d="M2 368.5q10 22.5 57 22.5h203v754h-203q-47 0 -57 22.5t25 57.5l319 319q23 23 53 23q31 0 54 -23l321 -319q33 -35 22.5 -57.5t-57.5 -22.5h-202v-754h202q47 0 57.5 -22.5t-24.5 -57.5l-319 -319q-23 -23 -54 -23t-53 23l-321 319q-33 35 -23 57.5z" />
158
- <glyph unicode="&#xf07e;" horiz-adv-x="1597" d="M0 729q0 31 23 53l319 322q35 33 57.5 23.5t22.5 -56.5v-205h754v203q0 47 22.5 57.5t56.5 -22.5l320 -322q23 -23 22 -53q0 -31 -22 -53l-320 -322q-35 -33 -57 -22.5t-22 57.5v203h-754v-203q0 -47 -22.5 -57t-57.5 24l-319 320q-23 23 -23 53z" />
159
- <glyph unicode="&#xf080;" d="M0 115v1306q0 47 35 81t82 34h1612q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1612q-47 0 -82 34t-35 81zM154 154h1536v1228h-1536v-1228zM307 264v363h203v-363h-203zM649 264v776h201v-776h-201zM993 264v592h203v-592h-203zM1333 264v922h203v-922 h-203z" />
160
- <glyph unicode="&#xf081;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t73 15.5h1153q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1153q-39 0 -73.5 15.5t-60 41t-41 60.5t-15.5 76zM201 559q80 -111 198.5 -169t259.5 -58q96 0 184.5 26.5t160 73.5 t124 112.5t76.5 143.5q82 6 129 57q14 14 4 33q-8 18 -30 15h-4q23 23 30 45q8 20 -8 32q-14 14 -33 2q-8 -4 -29.5 -10t-45.5 -6q-4 0 -7.5 1t-7.5 1q0 2 -1 4t-1 4q-16 61 -57 110.5t-94 72.5q4 4 6 8t6 8q6 16 0 33q-2 6 -12.5 16t-34.5 8q-2 4 -6 8q-12 12 -25 9 q-25 -4 -49 -13l-2 2q-14 8 -31 -2q-59 -37 -98 -100t-68 -135q-35 31 -57 41q-61 35 -129 63.5t-154 61.5q-14 4 -24 -4q-10 -6 -15 -21q-2 -27 8.5 -58.5t38.5 -62.5q-25 -6 -20 -32q12 -68 68 -101l-13 -12q-14 -14 -4 -33q4 -12 26.5 -37.5t65.5 -38.5q-6 -12 -6 -22 t2 -14q6 -33 39 -50q-37 -25 -79 -34t-85 -5.5t-83 20.5t-70 46q-8 8 -19.5 8t-19.5 -8q-23 -18 -4 -39z" />
161
- <glyph unicode="&#xf082;" horiz-adv-x="1536" d="M2 193v1150q0 39 15.5 75t41 61.5t60.5 41t74 15.5h1153q80 0 136 -56.5t56 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-74 -15.5h-486v643h172q12 0 21.5 8t9.5 21l12 168q0 14 -8 24q-10 10 -23 10h-184v74q0 41 10.5 54.5t53.5 13.5q25 0 55.5 -4t58.5 -11 q6 0 13.5 1.5t11.5 5.5q10 6 14 22l23 162q4 29 -25 35q-90 25 -188 24q-301 0 -301 -293v-84h-103q-33 0 -32 -32v-168q0 -12 9 -21.5t23 -9.5h103v-643h-393q-39 0 -74 15.5t-60.5 41t-41 60.5t-15.5 76z" />
162
- <glyph unicode="&#xf083;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 160h1536v114h-1536v-114zM154 1145h1536v231h-957l-14 -92h-565v-139zM266 1341h316v93h-316v-93zM557 709q0 -76 28.5 -142.5t78 -116 t116 -78t142.5 -28.5t142 28.5t115.5 78t78 116t28.5 142.5t-28.5 142.5t-78 115.5t-116 77.5t-141.5 28.5q-76 0 -142.5 -28.5t-116 -77.5t-78 -115.5t-28.5 -142.5zM672 709q0 51 19.5 97t53 80t79.5 53t98 19q51 0 97 -19t80 -53t53 -80t19 -97t-19 -97.5t-53 -80 t-80 -53t-97 -19.5t-97.5 19.5t-80 53t-53 79.5t-19.5 98zM743 709q0 -16 12.5 -28.5t28.5 -12.5q18 0 30.5 12.5t12.5 28.5q0 41 28 67.5t67 26.5v2q18 0 30.5 12t12.5 29q0 18 -12.5 30.5t-30.5 12.5q-74 0 -126.5 -53.5t-52.5 -126.5z" />
163
- <glyph unicode="&#xf084;" horiz-adv-x="1916" d="M0 803.5q-6 111.5 30 230.5t113 228q78 109 179.5 180t209 102t213 17.5t191.5 -74.5q76 -53 121 -134t59 -176.5t-4 -199t-68 -203.5l414 -297l101 139l-105 74q-14 10 -17 27.5t7 32.5l51 69q10 14 26.5 17.5t32.5 -7.5l344 -247q16 -10 18.5 -27.5t-7.5 -32.5l-49 -69 q-10 -14 -27.5 -17.5t-32.5 6.5l-102 76l-101 -139l248 -178q43 -31 52.5 -83t-21.5 -95q-33 -43 -84 -51.5t-94 22.5l-803 573q-78 -80 -170 -130t-186.5 -68.5t-185.5 -2t-167 71.5q-86 61 -133 157.5t-53 208zM230.5 766q7.5 -41 30 -78t58.5 -63q37 -27 79 -36t83 -2 t78 29.5t64 59.5q39 53 41 114.5t-27 114.5q59 -10 116.5 11.5t96.5 74.5q27 37 36 79t2 84t-29.5 79t-59.5 63q-37 27 -79 36t-84 2t-79 -29.5t-63 -59.5q-37 -53 -39 -114.5t26 -114.5q-59 10 -116.5 -12.5t-96.5 -75.5q-27 -37 -36 -79t-1.5 -83z" />
164
- <glyph unicode="&#xf085;" horiz-adv-x="1916" d="M0 801v180q0 8 22.5 15.5t52 11.5t56.5 7t37 3q12 49 37 88q-23 31 -45.5 61.5t-46.5 59.5l-4 10q0 6 20.5 29.5t47 50t50 47t29.5 20.5q2 0 20.5 -13t41 -30.5t43 -34t24.5 -20.5q43 25 90 37q0 8 3 37t7 57.5t10.5 52t16.5 23.5h178q8 0 15.5 -23.5t11.5 -52t7 -57.5 t5 -37q45 -12 86 -35q31 23 62.5 45.5t60.5 46.5l8 4q4 0 27.5 -21.5t49.5 -47t47.5 -49t21.5 -29.5q0 -4 -13.5 -22.5t-30 -40t-32 -41t-19.5 -25.5q23 -39 39 -92q10 -2 37 -5t55.5 -8.5t51 -11.5t22.5 -14v-178q0 -10 -22.5 -16.5t-51 -11.5t-56.5 -7t-36 -4 q-14 -43 -37 -88q23 -31 44.5 -60.5t48.5 -58.5l2 -10q0 -6 -20.5 -30t-47.5 -50.5t-50.5 -47t-29.5 -20.5q-2 0 -20.5 13.5t-41 31t-42 32.5t-25.5 20q-45 -23 -88 -37q0 -10 -3 -37t-8 -56.5t-12.5 -52t-15.5 -22.5h-178q-8 0 -15.5 22.5t-11.5 52t-7 56t-3 37.5 q-45 12 -88 37q-31 -23 -61.5 -46.5t-59.5 -48.5l-10 -2q-4 0 -27.5 20.5t-49 47t-46 50.5t-20.5 30q0 2 13 20.5t29.5 40t31 41t18.5 25.5q-23 43 -39 94q-10 2 -37 5t-55.5 7t-51 10.5t-22.5 14.5zM420 889q0 -37 14.5 -70t39 -57.5t58 -38.5t70.5 -14t70 14t57.5 38.5 t38.5 57.5t14 70t-14 70.5t-38.5 58t-57.5 39t-70 14.5q-76 0 -129 -53t-53 -129zM1114 373q0 6 13.5 13t31 14.5t33.5 12.5t22 7q4 23 9.5 39t15.5 37q-4 4 -13 17t-18.5 27.5t-16.5 28t-7 17.5t18.5 23.5t43 41t47 40t28.5 24.5l8 4q4 0 16.5 -8.5t25.5 -19.5t25.5 -21.5 t16.5 -14.5q35 12 76 19q2 6 9 21.5t16.5 30.5t17.5 27.5t14 12.5q4 0 34 -7t63.5 -18.5t60.5 -23.5t27 -23q0 -23 -5.5 -47t-9.5 -47q16 -12 28.5 -26.5t22.5 -30.5q25 2 49.5 3t47.5 1q8 0 18 -26.5t17.5 -60.5t12.5 -64.5t5 -39.5q0 -6 -13.5 -13t-29.5 -13t-32.5 -12.5 t-22.5 -8.5q-9 -38 -23 -71q2 -6 11.5 -18.5t18.5 -27t16 -27.5t7 -18q0 -4 -18.5 -23.5t-43 -41t-47 -40.5t-28.5 -26l-8 -4q-4 0 -16.5 8.5t-25.5 19.5t-25.5 21.5t-16.5 14.5q-37 -12 -78 -19q-2 -6 -9 -21.5t-15.5 -30.5t-16.5 -27.5t-14 -12.5t-35 7.5t-62.5 18.5 t-60 23.5t-26.5 22.5q0 23 5 47.5t9 46.5q-16 12 -28.5 26.5t-22.5 30.5q-23 -2 -45.5 -3t-44.5 -1h-14.5t-8.5 11q-2 8 -8 35.5t-13.5 58t-12.5 55.5t-5 29zM1192 1264q0 6 12.5 12t29.5 10t33.5 6t22.5 4q10 33 31 64q-2 4 -8 17.5t-12.5 27.5t-11.5 25.5t-5 15.5 q0 6 21.5 22.5t49 35t51.5 32.5t28 14t13 -9t20.5 -21.5t20.5 -23.5t13 -15q14 4 28.5 6t29.5 0h14q2 4 11 16.5t18.5 25.5t17.5 23.5t12 10.5t30 -11.5t55.5 -26t53 -28.5t23.5 -20q0 -4 -4 -15.5t-8 -26t-8.5 -27.5t-6.5 -17q20 -25 39 -60q51 -4 74 -7t29 -18.5t5 -52 t3 -106.5q0 -6 -12.5 -12.5t-28.5 -10.5t-32.5 -6t-22.5 -4q-13 -36 -31 -63q2 -4 8 -16.5t13.5 -27t12.5 -26.5t5 -14q0 -6 -22.5 -23.5t-50 -36t-51.5 -33t-26 -14.5q-4 0 -14 9.5t-21.5 21.5t-20.5 23.5t-13 15.5q-14 -4 -28.5 -6t-29.5 0h-14q-4 -4 -12 -16.5t-17.5 -26 t-18.5 -23.5t-13 -10t-30 11t-54.5 25.5t-52 29t-23.5 20.5q0 2 3 14.5t8 26.5t9 27.5t6 17.5q-23 23 -38 59q-53 2 -75 5t-29 18.5t-5 52.5t-4 109zM1397 367q0 -49 34.5 -85t84.5 -36q49 0 84.5 34.5t35.5 86.5q0 49 -34.5 83.5t-85.5 34.5q-49 0 -84 -34.5t-35 -83.5z M1446 1206q0 -47 31.5 -78.5t76.5 -31.5q47 0 79 31.5t32 76.5q0 47 -31.5 79t-77.5 32q-47 0 -78.5 -32t-31.5 -77z" />
165
- <glyph unicode="&#xf086;" horiz-adv-x="1916" d="M0 997q0 119 61.5 222.5t167 180.5t246.5 122t303 45t303.5 -45t247 -122t166.5 -180.5t61 -222.5q0 -117 -61 -221t-166.5 -181t-247 -122t-303.5 -45q-37 0 -73.5 3t-71.5 7q-147 -113 -336 -155q-20 -4 -40.5 -7.5t-43.5 -7.5q-12 -2 -21.5 6.5t-13.5 18.5v2 q-4 12 3 19.5t18 17.5q18 18 34.5 36.5t29.5 42t24.5 55.5t19.5 79q-141 78 -224 195.5t-83 256.5zM649 258q6 4 13.5 8t13.5 8q51 -6 102 -6q197 0 369 56.5t298 155t198.5 231.5t72.5 286q0 41 -6 84q96 -78 151.5 -175t55.5 -208q0 -139 -83 -256.5t-224 -195.5 q8 -47 19 -79t25.5 -55.5t30 -42t33.5 -36.5q10 -10 17.5 -18.5t3.5 -18.5v-2q-2 -12 -12.5 -19.5t-22.5 -5.5q-23 4 -43.5 7.5t-40.5 7.5q-96 20 -180 60t-156 95q-35 -4 -71.5 -7t-73.5 -3q-141 0 -265 35t-225 94z" />
166
- <glyph unicode="&#xf087;" horiz-adv-x="1597" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 43 30.5t35 39.5q16 20 32.5 38.5t34.5 37.5q33 35 76 68.5t66 74.5q16 29 23 64.5t12.5 71.5t12.5 70t23.5 60.5t47 42t81.5 15.5q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -59 -17.5 -112.5t-42.5 -107.5 q35 2 70 4.5t70 2.5q55 0 107 -10.5t93 -35t66.5 -67.5t25.5 -109q0 -29 -5 -57t-15 -57q18 -43 18 -90q0 -78 -41 -142q10 -59 -7 -118.5t-58 -104.5q-4 -84 -45 -139.5t-102.5 -89t-135 -47t-143.5 -13.5q-72 0 -144.5 10.5t-142.5 28.5q-70 20 -139.5 43t-142.5 23h-375 q-49 0 -84 34.5t-35 84.5zM236 276q0 -35 22 -57t57 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57 -23.5t-22 -56.5zM492 193q70 0 136 -16.5t133.5 -35t141.5 -35t160 -16.5q45 0 98 6t99.5 26.5t78 56.5t31.5 95q0 10 -1 18.5t-3 18.5 q35 16 53.5 53t18.5 74q0 39 -21 68q60 49 60 123q0 23 -12.5 43t-26.5 35q16 29 28.5 57.5t12.5 62.5q0 35 -17.5 55.5t-43 31t-56.5 12.5t-57 2q-45 0 -90.5 -3t-90.5 -3q-31 0 -61.5 3t-58.5 15q0 41 16 78t35.5 74.5t35 78.5t15.5 91q0 33 -10.5 65.5t-29.5 59t-47 44 t-65 17.5h-11t-11 -2q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -74 -88t-86 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-2v-643z" />
167
- <glyph unicode="&#xf088;" horiz-adv-x="1597" d="M0 309q0 29 5 57.5t15 57.5q-18 43 -18 90q0 78 41 141q-10 59 7.5 119t58.5 105q4 84 45 139t102 89t135 47t144 13q72 0 144.5 -10t141.5 -29q70 -20 139.5 -42.5t143.5 -22.5h375q49 0 83.5 -35t34.5 -84v-643q0 -49 -34.5 -84t-83.5 -35h-349q-27 -14 -43 -30.5 t-34 -38.5q-16 -20 -32.5 -39t-35.5 -37q-33 -35 -76 -69t-65 -74q-25 -43 -31 -99.5t-18.5 -106.5t-44 -84t-107.5 -34q-61 0 -111.5 25.5t-85 68.5t-54 98.5t-19.5 112.5q0 59 17.5 112.5t41.5 106.5q-35 -2 -69.5 -4t-69.5 -2q-55 0 -107.5 10.5t-93.5 35t-66.5 67.5 t-25.5 108zM119 309q0 -35 17.5 -55.5t43 -30.5t56 -12t57.5 -2q47 0 91 3t89 3q31 0 61.5 -3t59.5 -15q0 -41 -16.5 -78t-36 -75t-34.5 -79t-15 -90q0 -33 10 -65.5t29.5 -59t47 -43t64.5 -16.5q4 0 11.5 -1t11.5 1q8 4 9 8l3 12q12 59 22.5 124t38.5 118q29 51 74 88 t86 78q29 31 49.5 56.5t42 48t47 42t66.5 35.5h2v643q-72 0 -137.5 16.5t-133 36t-141 36t-159.5 16.5q-45 0 -98.5 -7.5t-99.5 -27t-78 -56t-32 -96.5q0 -10 1 -18t3 -19q-35 -16 -53 -53t-18 -74q0 -39 20 -67q-59 -49 -59 -123q0 -23 12 -43.5t27 -34.5 q-16 -29 -28.5 -57.5t-12.5 -63.5zM1202 860q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -22.5t-23.5 -57.5z" />
168
- <glyph unicode="&#xf089;" horiz-adv-x="837" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q23 41 50 41v-1348l-453 -237q-41 -23 -64.5 -6.5t-15.5 63.5l86 504l-364 356q-35 33 -26 60.5z" />
169
- <glyph unicode="&#xf08a;" horiz-adv-x="1802" d="M0 1073q0 137 43 231.5t112.5 153t156.5 84t177 25.5q63 0 125 -21.5t115 -53.5t97 -70t75 -68q31 31 76 68.5t98 69.5t113.5 53.5t126.5 21.5q88 0 175 -25.5t156.5 -84t112.5 -153t43 -231.5q0 -94 -34.5 -177t-76.5 -146.5t-79 -102.5t-39 -43l-615 -612 q-26 -23 -57 -23q-33 0 -55 23l-617 614q-4 2 -39.5 41t-77.5 102.5t-77 146.5t-35 177zM160 1073q0 -68 27.5 -131t61.5 -112.5t63 -79.5l28 -29l561 -559l561 559l29 29q29 30 62.5 79.5t61 113t27.5 130.5q0 104 -29.5 169t-77.5 101.5t-106.5 50t-113.5 13.5 q-53 0 -107.5 -25.5t-102.5 -61.5t-86 -74t-56 -60q-25 -31 -62 -31t-61 31q-18 23 -56.5 60.5t-86.5 73.5t-102.5 61.5t-105.5 25.5q-57 0 -115.5 -13.5t-106.5 -50t-77.5 -101t-29.5 -169.5z" />
170
- <glyph unicode="&#xf08b;" horiz-adv-x="1689" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h461v-193h-461q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h461v-193h-461q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM508 584v368q0 33 22.5 54.5t55.5 21.5h428v293 q0 41 39 57q39 14 65 -14l553 -553q18 -18 18.5 -44t-18.5 -42l-553 -553q-18 -18 -43 -18q-10 0 -22 4q-39 16 -39 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5z" />
171
- <glyph unicode="&#xf08c;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM207 1192q0 -57 40 -97t95 -40q57 0 97 40t40 97q0 55 -40 95t-97 40q-55 0 -95 -40 t-40 -95zM213 240q0 -10 9 -19.5t20 -9.5h200q12 0 20.5 9t8.5 20v706q0 29 -29 29h-200q-10 0 -19.5 -8.5t-9.5 -20.5v-706zM580 240q0 -10 9 -19.5t19 -9.5h201q12 0 20.5 9t8.5 20v383q0 68 26.5 113.5t102.5 45.5q59 0 79.5 -28.5t20.5 -81.5v-432q0 -10 8 -19.5 t21 -9.5h204q10 0 19.5 9t9.5 20v477q0 141 -81 208.5t-216 67.5q-55 0 -107.5 -15t-93.5 -56q0 16 -3 34.5t-25 18.5h-195q-10 0 -19 -8.5t-9 -20.5v-706z" />
172
- <glyph unicode="&#xf08d;" horiz-adv-x="1916" d="M2 950q8 82 45 172t100 176t139 147.5t152 92.5t145.5 30t121.5 -40q53 -41 73.5 -107.5t12.5 -148.5l301 -225q111 63 215 73t180 -47q55 -41 80.5 -108.5t23.5 -150.5t-30.5 -177t-83.5 -188l428 -410q25 -25 4 -53q-12 -16 -33 -17q-10 0 -18 6l-517 293 q-74 -80 -155.5 -135t-161.5 -80.5t-151.5 -19.5t-127.5 47q-76 55 -95 158.5t9 228.5l-303 223q-76 -33 -145.5 -32t-122.5 40q-51 39 -72.5 104.5t-13.5 147.5zM171 858.5q3 -16.5 15 -27.5q21 -14 50 -14q31 0 65.5 17.5t71.5 46t72.5 66.5t66.5 79q10 14 7 30.5 t-15 26.5q-14 10 -30.5 8.5t-27.5 -16.5q-78 -104 -138 -143t-72 -35q-14 10 -31 7t-27 -15q-10 -14 -7 -30.5zM465 754l364 -271q8 -8 23 -8q20 0 33 17q10 14 8 29.5t-16 25.5l-347 258q-16 -14 -32.5 -27.5t-32.5 -23.5zM829.5 239.5q1.5 -16.5 16.5 -26.5q29 -23 69 -23 q41 0 88.5 21.5t95.5 57.5t94 84.5t87 101.5q10 12 8 28.5t-16 26.5q-12 10 -28.5 8t-26.5 -16q-51 -68 -102.5 -116t-95.5 -75.5t-78 -36t-48 4.5q-14 10 -29.5 7t-25.5 -18q-10 -12 -8.5 -28.5z" />
173
- <glyph unicode="&#xf08e;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h582q-2 -14 -4 -27.5t-2 -29.5v-88q0 -23 6 -48h-582q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v340q41 -31 90 -49t103 -20v-271q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM692.5 522q-0.5 25 16.5 41l770 772h-269q-25 0 -41 16.5t-16 41.5v86q-2 23 15.5 40t41.5 17h576q23 0 40 -17.5t17 -39.5v-86v-490q0 -25 -17.5 -42t-39.5 -15h-86 q-25 0 -41.5 16.5t-16.5 40.5v268l-772 -770q-16 -16 -40.5 -16t-41.5 16l-79 80q-16 16 -16.5 41z" />
174
- <glyph unicode="&#xf090;" horiz-adv-x="1689" d="M0 584v368q0 33 22.5 54.5t55.5 21.5h428v293q0 41 37 57q39 14 67 -14l553 -553q16 -18 16.5 -44t-16.5 -42l-553 -553q-18 -18 -43 -18q-8 0 -24 4q-37 16 -37 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5zM922 0v193h460q47 0 81 33.5t34 80.5v922q0 47 -33.5 80.5 t-81.5 33.5h-460v193h460q63 0 118.5 -24.5t97.5 -65.5t67 -97.5t25 -119.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-460z" />
175
- <glyph unicode="&#xf091;" horiz-adv-x="1689" d="M0 1042v187q0 33 22.5 54.5t55.5 21.5h323q-2 12 -2 25v24v4q0 53 4.5 88t15.5 54.5t31.5 27.5t55.5 8h678q33 0 54.5 -8t32.5 -27.5t15 -54.5t4 -88v-25.5t-2 -27.5h324q33 0 55.5 -21.5t22.5 -54.5v-187q0 -63 -45.5 -130.5t-122 -128t-180 -106.5t-222.5 -65 q-51 -10 -91 -41.5t-40 -70.5q0 -35 17.5 -51.5t39 -31t40 -31.5t22.5 -52q4 -23 -2 -47q-4 -14 23.5 -23.5t67.5 -18.5t82 -22.5t64 -34.5q12 -10 19.5 -39.5t9.5 -64.5q2 -33 -6 -58.5t-29 -25.5h-985q-20 0 -28.5 25.5t-6.5 58.5q2 35 9.5 64.5t19.5 39.5q23 20 64 34 t80.5 23t68.5 18t25 24q-4 14 -4 25.5v21.5q2 35 21.5 52t42 31.5t39.5 31t17 51.5q0 39 -39.5 70.5t-93.5 41.5q-117 20 -220 66.5t-180 106t-122 127t-45 130.5zM154 1042q0 -20 23.5 -54t67.5 -70.5t106.5 -71.5t140.5 -60q-25 80 -44.5 175.5t-33.5 189.5h-260v-109z M1198 786q78 25 140.5 60t106.5 71.5t67.5 70.5t23.5 54v109h-262q-12 -94 -31.5 -189.5t-44.5 -175.5z" />
176
- <glyph unicode="&#xf092;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-337v25q0 39 2 97t-3.5 115.5t-24.5 104.5t-65 66q188 20 290 110t102 287q0 66 -22.5 128t-67.5 114q6 23 8 45t2 45 q0 41 -9.5 91t-31.5 85h-12q-43 2 -79 -8.5t-68 -27.5t-62.5 -37.5t-65.5 -39.5q-33 4 -65.5 6t-65.5 2t-65.5 -2t-65.5 -6q-35 18 -65.5 39t-62.5 38t-67.5 27.5t-79.5 8.5h-12q-23 -35 -32 -85t-9 -91q0 -23 2 -45.5t8 -44.5q-45 -51 -66.5 -114t-21.5 -128 q0 -193 95.5 -283t281.5 -112q-39 -16 -59.5 -50t-32.5 -75q-27 -8 -49.5 -15.5t-50.5 -7.5q-55 0 -88 28.5t-59.5 62.5t-56.5 62.5t-79 28.5q-4 0 -20.5 -2t-16.5 -12q0 -23 19.5 -32t31.5 -19q39 -31 56.5 -71t39 -76.5t62.5 -62.5t127 -26q35 0 80 11q0 -10 -1 -18.5 t-1 -16.5q0 -29 2 -59.5t-2 -59.5h-317q-80 0 -136.5 56.5t-56.5 136.5z" />
177
- <glyph unicode="&#xf093;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM346 969.5q-6 15.5 16 38.5l504 505q23 23 55.5 23t55.5 -23l506 -505q23 -23 15.5 -38.5 t-38.5 -15.5h-307v-499q0 -33 -22.5 -55.5t-55.5 -22.5h-307q-33 0 -54.5 22.5t-21.5 55.5v499h-307q-33 0 -39 15.5z" />
178
- <glyph unicode="&#xf094;" horiz-adv-x="1609" d="M2 514q-2 35 1 68.5t7 74.5q4 35 7 72t10 66q14 66 30.5 128t44.5 117q20 41 45 81t54 79q10 14 21 24.5t24 20.5q23 23 45 45.5t49 42.5t57.5 36.5t65.5 33.5q33 16 67.5 29.5t71.5 27.5q70 29 156 51l2 2q45 12 85 17.5t79 5.5q59 0 112.5 -9t106.5 -20q41 -8 85 -15 t93 -7h2q29 0 62.5 5t66.5 5q25 0 45.5 -6t32.5 -25q23 -31 26 -71.5t-2 -75.5q-4 -35 -8 -71t2 -72q4 -23 11.5 -39.5t15.5 -36.5q8 -18 11 -40t7 -42q18 -104 15.5 -195.5t-23 -170.5t-56.5 -148.5t-81 -132.5q-37 -49 -79 -97.5t-92 -91.5t-110.5 -77.5t-134.5 -59.5 q-76 -27 -158.5 -34t-158.5 -11h-31q-104 0 -194.5 16.5t-192.5 16.5h-4q-35 0 -77 -10.5t-83 -12.5h-2q-37 0 -65.5 17.5t-42.5 42.5q-20 35 -17.5 72.5t12.5 68.5t10.5 66.5t-5 75.5t-12.5 81t-9 82z" />
179
- <glyph unicode="&#xf095;" horiz-adv-x="1597" d="M0 1169q0 55 14.5 114.5t43 114t68.5 98.5t93 69q12 -2 26.5 0t26.5 2q10 0 30 -1l40 -2t38.5 -4.5t27.5 -7.5q8 -6 15 -18t12 -26.5t9.5 -30t8.5 -25.5q6 -18 23.5 -65.5t35.5 -97.5t32.5 -93t14.5 -53q0 -37 -24.5 -68t-54 -57.5t-54.5 -50t-25 -45.5q0 -20 16.5 -49 t26.5 -46q84 -145 188.5 -248.5t252.5 -187.5q18 -10 45.5 -27.5t50.5 -17.5t52.5 32t60 70.5t62 70.5t58.5 32q10 0 51.5 -22.5t89.5 -50t93 -55.5t61 -36q16 -10 46 -25.5t40 -35.5q2 -6 2 -23q0 -16 -3 -36.5t-8 -43t-12 -43t-13 -35.5q-18 -39 -59.5 -71.5t-92.5 -55 t-104.5 -36t-92.5 -13.5q-80 0 -153.5 25.5t-145.5 54.5q-123 45 -232.5 118t-203.5 164t-175 196.5t-144 215.5q-25 41 -52.5 95.5t-51 112t-39 113.5t-15.5 105z" />
180
- <glyph unicode="&#xf096;" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h1075q63 0 118.5 -24.5t97.5 -66.5t67 -97.5t25 -118.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM193 307q0 -47 33.5 -80.5 t80.5 -33.5h1075q47 0 81 33.5t34 80.5v922q0 47 -34 80.5t-81 33.5h-1075q-47 0 -80.5 -33.5t-33.5 -80.5v-922z" />
181
- <glyph unicode="&#xf097;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81zM158 186l469 471l469 -471v1194h-938v-1194z" />
182
- <glyph unicode="&#xf098;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM193 1040q2 -35 15 -76.5t30 -78.5q16 -37 33.5 -72t33.5 -63q74 -129 176.5 -241 t225.5 -190q31 -18 67.5 -36.5t75.5 -32.5q41 -16 83 -31.5t81 -21.5q63 -10 112.5 2t90.5 34q27 12 57.5 33.5t44.5 52.5q4 8 9 27t9 38t6.5 37.5t-2.5 29.5q-4 12 -24.5 22t-36.5 21q-43 25 -71.5 41t-67.5 38q-16 10 -36 23.5t-38 13.5q-23 0 -46.5 -27.5t-37.5 -43.5 q-12 -14 -36.5 -43t-47.5 -31q-14 -2 -32.5 10t-37.5 23q-106 59 -182 136t-135 177q-10 16 -21.5 37.5t-7.5 38.5q2 18 24.5 33.5t35.5 29.5q14 16 31.5 37t19.5 43q4 16 -5 38t-16 42q-16 43 -28.5 76t-26.5 76q-6 16 -12 40.5t-21 30.5q-8 4 -26.5 7t-39 4.5t-37.5 0 t-24 -1.5h-8q-33 -16 -62.5 -45.5t-51 -69.5t-34 -88t-9.5 -100z" />
183
- <glyph unicode="&#xf099;" d="M0 399q0 20 13.5 33.5t33.5 13.5q14 0 31 -12q123 -109 287 -108q59 0 117.5 15t107.5 48q-29 16 -47.5 42t-18.5 58q0 23 8 39q-18 6 -44.5 20.5t-51 34t-41 43t-16.5 46.5q0 16 10 28.5t25 22.5q-41 25 -76 74t-35 98q0 33 33 43q-35 35 -55.5 81t-20.5 95 q0 23 9.5 41.5t37.5 18.5q18 0 84 -27t142.5 -60.5t146.5 -67.5t98 -48q25 -14 47.5 -31.5t44.5 -36.5q20 51 47 106.5t60 106.5t73 96t89 74q8 6 24 6q18 0 27 -8q16 6 41.5 13.5t42.5 7.5q29 0 43 -27q31 0 56.5 -15.5t25.5 -50.5q0 -31 -27 -53q96 -43 159.5 -125 t90.5 -182q6 -2 23 -2q47 0 88 16.5t57 16.5q18 0 31.5 -14.5t13.5 -32.5q0 -23 -19.5 -48.5t-33.5 -39.5q23 4 42 -7.5t19 -38.5q0 -29 -26.5 -50t-61.5 -37.5t-72.5 -25.5t-58.5 -11q-43 -139 -133 -246t-210 -178.5t-258 -109.5t-275 -38q-219 0 -415 93.5t-325 273.5 q-8 16 -8 26z" />
184
- <glyph unicode="&#xf09a;" horiz-adv-x="790" d="M0 862v203q0 16 11.5 28.5t27.5 12.5h125v102q0 358 366 359q123 0 232 -31q33 -10 29 -43l-27 -199q-4 -16 -16 -26q-16 -10 -31 -6q-35 8 -72.5 12t-66.5 4q-53 0 -65.5 -16.5t-12.5 -67.5v-88h223q14 0 29 -14q10 -10 10 -29l-17 -205q0 -16 -11 -25.5t-27 -9.5h-207 v-784q0 -16 -11.5 -27.5t-27.5 -11.5h-258q-16 0 -27.5 11.5t-11.5 27.5v784h-125q-16 0 -27.5 11.5t-11.5 27.5z" />
185
- <glyph unicode="&#xf09b;" horiz-adv-x="1847" d="M0 743q0 115 37 222.5t113 193.5l-3 4l3 2q-16 39 -21.5 81t-5.5 85q0 25 2 56.5t8 65.5t15.5 63.5t23.5 50.5h8q61 0 110.5 -12.5t94.5 -35t87 -52t91 -60.5q86 25 178.5 33t182.5 8t182 -8t180 -33q47 31 90 60.5t87 52t93.5 35t110.5 12.5h10q12 -20 21.5 -50 t15.5 -64t9 -65.5t3 -56.5q0 -43 -6 -85t-20 -81v-2l-2 -4q76 -86 112.5 -193.5t36.5 -222.5q0 -233 -66.5 -383.5t-188.5 -236.5t-292 -120t-376 -34q-207 0 -378 34t-292 120t-187.5 236.5t-66.5 383.5zM250 483q0 -145 64.5 -224t165 -116t219 -43t227.5 -6q74 0 152.5 2 t153.5 12.5t142.5 34t117.5 67.5t80 111.5t30 165.5q0 84 -27 147.5t-75 106.5t-114.5 64.5t-146.5 21.5q-78 0 -156.5 -7t-156.5 -7t-157 7t-157 7q-162 0 -262 -87t-100 -257zM494 524q0 66 26.5 113t65.5 47t66.5 -47t27.5 -113t-27.5 -112.5t-66.5 -46.5t-65.5 46.5 t-26.5 112.5zM795 258q-6 16 12 25q16 6 24 -13q27 -76 93 -75q31 0 56.5 20.5t35.5 54.5q8 20 26 13q16 -6 13 -25q-16 -47 -51 -75.5t-80 -28.5q-43 0 -78 28.5t-51 75.5zM864 369q0 -12 17.5 -21.5t42.5 -9.5t42 9.5t17 21.5t-17.5 21t-41.5 9q-25 0 -42.5 -9t-17.5 -21z M1167 524q0 -66 28 -112.5t67 -46.5t65.5 46.5t26.5 112.5t-27 113t-65 47q-39 0 -67 -47t-28 -113z" />
186
- <glyph unicode="&#xf09c;" horiz-adv-x="1880" d="M0 117v626q0 49 35 84t82 35h665v156q0 113 43 213t118 175t175 118t213 43t213.5 -43t175 -118t117.5 -175.5t43 -212.5v-152q0 -33 -22.5 -55.5t-55.5 -22.5h-80q-33 0 -55 23t-22 55v152q0 66 -25 123t-67 99t-99 66.5t-123 24.5t-122 -24.5t-99 -66.5t-67.5 -99.5 t-24.5 -122.5v-156h119q47 0 81.5 -34.5t34.5 -84.5v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
187
- <glyph unicode="&#xf09d;" d="M0 154v1228q0 63 45 108.5t109 45.5h1536q63 0 108 -45t45 -109v-1228q0 -63 -45 -108.5t-108 -45.5h-1536q-63 0 -108.5 45t-45.5 109zM154 154h1536v575h-1536v-575zM154 1114h1536v268h-1536v-268zM260 250v115h307v-115h-307zM676 250v115h446v-115h-446z" />
188
- <glyph unicode="&#xf09e;" horiz-adv-x="1566" d="M0 236q0 49 18.5 91t50 74.5t75 51t92.5 18.5t91 -18.5t74.5 -51t51 -74.5t18.5 -91t-18.5 -92.5t-51 -75t-74.5 -50t-91 -18.5t-92.5 18.5t-75 50t-50 74.5t-18.5 93zM0 819v158q0 35 25 57q23 23 53 23q2 0 3 -1t3 -1q193 -14 362.5 -95t301 -212.5t212 -301.5 t95.5 -362q4 -35 -21 -59q-23 -25 -57 -25h-158q-29 0 -51.5 20.5t-26.5 51.5q-12 133 -68.5 249.5t-145.5 205.5t-205.5 145.5t-249.5 68.5q-31 4 -51.5 27t-20.5 51zM0 1331v158q0 33 25 55q23 23 53 23h4q301 -16 565 -137t463 -320t319.5 -463t137.5 -565q4 -31 -23 -57 q-23 -25 -55 -25h-158q-31 0 -53.5 21.5t-24.5 52.5q-14 238 -110 446.5t-255 367.5t-368 255t-446 110q-31 2 -52.5 24.5t-21.5 53.5z" />
189
- <glyph unicode="&#xf0a0;" d="M0 193v382q0 23 6 45.5t12 45.5l238 727q20 63 75.5 103t121.5 40h938q66 0 121 -40t75 -103l238 -727q6 -23 12 -45.5t6 -45.5v-382q0 -41 -15.5 -76t-41 -60.5t-61 -41t-74.5 -15.5h-1458q-80 0 -136.5 56.5t-56.5 136.5zM154 193q0 -16 11 -27.5t28 -11.5h1458 q16 0 27.5 11t11.5 28v382q0 16 -11.5 27.5t-27.5 11.5h-1458q-16 0 -27.5 -11t-11.5 -28v-382zM213 768h1417l-188 578q-4 16 -19.5 26t-31.5 10h-938q-16 0 -31.5 -10t-20.5 -26zM1057 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5 t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5zM1364 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5z" />
190
- <glyph unicode="&#xf0a1;" d="M0 754v229q0 63 45 108.5t109 45.5h499q115 0 245 33.5t255 90t235.5 128t186.5 147.5q63 0 108.5 -45t45.5 -109v-368q49 -12 81.5 -52.5t32.5 -93.5t-32.5 -93t-81.5 -52v-369q0 -63 -45.5 -108t-108.5 -45q-68 68 -164 132t-206.5 117.5t-227.5 91.5t-227 50 q-43 -12 -70 -40t-37 -62.5t-2 -70.5t37 -65q-25 -41 -23 -75.5t20.5 -66.5t49.5 -61.5t66 -58.5q-20 -43 -69.5 -65.5t-106 -25.5t-110.5 10.5t-85 43.5q-18 61 -40 125t-36 130.5t-14 138t24 151.5h-200q-63 0 -108.5 45t-45.5 109zM807 741q102 -16 206.5 -49t205 -78 t191.5 -99t165 -112v930q-76 -59 -166 -113.5t-190.5 -98.5t-205 -77.5t-206.5 -48.5v-254z" />
191
- <glyph unicode="&#xf0a2;" horiz-adv-x="1759" d="M0 317q104 78 172 172.5t109 201t60 224t28 240.5q6 84 56 159t126 131t163 89t167 33q74 0 163 -33t165.5 -88t129 -129t52.5 -158q6 -121 27.5 -239.5t63.5 -227t109.5 -204t167.5 -171.5q-4 -70 -56 -114.5t-120 -44.5h-469q-18 -82 -82.5 -135.5t-150.5 -53.5 t-151.5 53.5t-84.5 135.5h-469q-68 0 -120 45t-56 114zM238 317h1284q-78 86 -129.5 183.5t-84 202t-50 214t-25.5 222.5q-4 55 -41 104t-89 86t-111.5 57.5t-110.5 20.5q-47 0 -107.5 -21.5t-114 -56.5t-91.5 -83t-40 -99q-6 -111 -23.5 -222.5t-51 -218t-87 -205 t-128.5 -184.5zM713 209q0 -70 49 -119t119 -49q18 0 18 20t-18 21q-53 0 -91 37t-38 90q0 20 -19 20q-20 0 -20 -20z" />
192
- <glyph unicode="&#xf0a3;" horiz-adv-x="1597" d="M0 573q0 33 23 56l143 139l-143 139q-23 23 -23 56q0 25 16.5 45t40.5 26l195 49q-6 18 -15.5 48t-18.5 61t-16 59.5t-7 46.5q0 31 21.5 52.5t51.5 21.5q18 0 47 -7t60 -16.5t60.5 -18.5t47.5 -15l49 194q6 25 27 41.5t45 16.5q35 0 53 -23l142 -143l139 143q23 23 53 23 q27 0 47.5 -15.5t26.5 -42.5l49 -194q18 6 48 15t60.5 18.5t59.5 16.5t47 7q29 0 51.5 -21.5t22.5 -52.5q0 -18 -7 -46.5t-16.5 -59.5t-18.5 -60.5t-15 -48.5l194 -49q25 -6 41 -26.5t16 -44.5q0 -33 -22 -56l-145 -139l145 -139q23 -23 22 -56q0 -25 -16 -45t-41 -26 l-194 -49q6 -18 15 -48t18.5 -61t16.5 -59.5t7 -46.5q0 -29 -21.5 -51.5t-52.5 -22.5q-18 0 -47 7t-59.5 16.5t-60 18.5t-48.5 15l-49 -194q-6 -25 -26.5 -41.5t-45.5 -16.5q-33 0 -55 23l-139 143l-142 -143q-18 -23 -53 -23q-25 0 -45 16.5t-27 41.5l-49 194 q-18 -6 -47.5 -15t-60.5 -18.5t-59.5 -16.5t-47.5 -7q-31 0 -52 22.5t-21 51.5q0 18 7 46.5t16 59.5t18.5 60.5t15.5 48.5l-195 49q-25 6 -41 26.5t-16 44.5z" />
193
- <glyph unicode="&#xf0a4;" horiz-adv-x="1916" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 42 30.5t34 39.5q16 20 33.5 38.5t33.5 37.5q35 35 77 68.5t65 74.5q25 43 29.5 99.5t17 106.5t44 84t109.5 34q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -53 -15.5 -104.5t-38.5 -98.5h134l376 -2 q49 0 93.5 -17.5t76 -49.5t50 -75t18.5 -94q0 -49 -18.5 -92t-50 -74.5t-75.5 -49t-94 -17.5h-200q-10 -59 -39 -107q10 -59 -7.5 -117.5t-56.5 -103.5q0 -76 -28.5 -131t-75.5 -90t-109.5 -52.5t-132.5 -17.5q-78 0 -148.5 16.5t-136 36t-128 36t-123.5 16.5h-375 q-49 0 -84 34.5t-35 84.5zM233 276q0 -35 22.5 -57t57.5 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57.5 -23.5t-22.5 -56.5zM489 193q70 0 136.5 -16.5t133 -35t133 -35t138.5 -16.5q43 0 84 8t72 27.5t50 52.5t19 82q0 14 -1 26.5t-3 24.5 q35 16 53.5 53t18.5 74q0 39 -20 68q59 49 59 123q0 23 -12.5 43.5t-26.5 34.5q90 0 178 1t178 1q51 0 84 30.5t33 81.5q0 53 -32.5 85t-84.5 32q-172 0 -340 1t-338 1q0 41 16.5 78t35 74.5t34 78.5t15.5 91q0 33 -10.5 65.5t-29 59t-46 44t-64.5 17.5h-11t-11 -2 q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -73 -88t-85 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-5v-643z" />
194
- <glyph unicode="&#xf0a5;" horiz-adv-x="1916" d="M0 821q0 51 18.5 94t50 75t75.5 49.5t94 17.5l376 2h134q-23 47 -38.5 98t-15.5 105q0 57 19.5 112.5t54.5 98.5t85 68.5t112 25.5q78 0 109.5 -34t43.5 -84t17.5 -106.5t29.5 -99.5q23 -41 65 -74.5t77 -68.5q16 -18 33.5 -37t33.5 -39q18 -23 33.5 -39t42.5 -31h348 q49 0 84 -34.5t35 -83.5v-643q0 -49 -35 -84t-84 -35h-375q-61 0 -123.5 -16.5t-128 -36t-136 -36t-148.5 -16.5q-70 0 -132.5 17.5t-109.5 52.5t-75.5 90t-28.5 131q-39 45 -56.5 103.5t-7.5 117.5q-29 47 -39 107h-200q-49 0 -93.5 17.5t-76 49t-50 74.5t-18.5 92z M121 821q0 -51 32.5 -81.5t84.5 -30.5q90 0 178 -1t178 -1q-14 -14 -26.5 -35t-12.5 -43q0 -74 59 -123q-20 -29 -20 -68q0 -37 18.5 -73.5t53.5 -53.5q-2 -12 -3 -24.5t-1 -26.5q0 -49 19 -82t50 -52.5t72 -27.5t84 -8q70 0 137.5 16.5t134 35t133 35t135.5 16.5v643h-4 q-41 16 -66.5 35.5t-47 42t-42 48t-48.5 56.5q-41 41 -85 78t-73 88q-29 53 -39 117.5t-23 123.5q-2 8 -3 12.5t-9 8.5q-4 2 -11 2h-11q-37 0 -65 -17.5t-46 -44t-28.5 -59.5t-10.5 -65q0 -49 15.5 -90.5t34 -79t34.5 -74.5t16 -78q-170 0 -337.5 -1t-339.5 -1 q-51 0 -84 -32t-33 -85zM1524 276q0 -35 23.5 -57t56.5 -22q35 0 57 22.5t22 56.5q0 33 -22.5 56.5t-56.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
195
- <glyph unicode="&#xf0a6;" horiz-adv-x="1597" d="M0 602q0 61 25.5 111.5t68.5 85.5t98.5 54t112.5 19q53 0 104.5 -15t98.5 -38v133l2 377q0 49 17.5 93t49 76t74.5 50.5t94 18.5q49 0 92.5 -18.5t75 -50.5t49 -76t17.5 -93v-201q59 -10 106 -38q59 10 118 -7.5t104 -56.5q76 0 131 -28.5t90 -76t52 -109.5t17 -132 q0 -78 -16 -148.5t-35.5 -136t-36 -128t-16.5 -124.5v-374q0 -49 -35 -84t-84 -35h-643q-49 0 -84 34.5t-35 84.5v348q-14 27 -30.5 42t-38.5 34q-20 16 -39 33.5t-37 33.5q-35 35 -68.5 77t-74.5 64q-43 25 -99.5 30t-106.5 17.5t-84 44t-34 109.5zM120 591q-1 -7 1 -11 q4 -8 8 -9.5t12 -3.5q59 -12 124 -22t118 -39q51 -29 88 -73t78 -85q31 -29 56.5 -49t48 -41.5t42 -48.5t35.5 -66v-4h643q0 70 16.5 136.5t35 133t35 133t16.5 138.5q0 43 -8.5 84t-28 71.5t-52 50t-81.5 19.5q-14 0 -26.5 -1t-25.5 -3q-16 35 -53 53.5t-74 18.5 q-39 0 -67 -21q-49 59 -123 60q-23 0 -43.5 -12.5t-34.5 -26.5q0 90 -1 178t-1 178q0 51 -30.5 84t-82.5 33q-53 0 -84.5 -33t-31.5 -84q0 -172 -1 -340t-1 -338q-41 0 -78 16.5t-75 35t-79 34t-90 15.5q-33 0 -65.5 -10.5t-59 -29t-43 -46t-16.5 -64.5q0 -4 -1 -11z M1210 -37q0 -35 23.5 -57.5t56.5 -22.5q35 0 57.5 22.5t22.5 57.5q0 33 -22.5 56.5t-57.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
196
- <glyph unicode="&#xf0a7;" horiz-adv-x="1597" d="M0 584q0 78 34 109.5t84 44t106.5 17.5t99.5 29q41 23 74.5 65t68.5 77q18 16 36.5 33.5t39.5 33.5q23 18 39 33.5t30 42.5v348q0 49 35 84t84 35h643q49 0 84 -35t35 -84v-375q0 -61 16.5 -123.5t36 -128t35.5 -136t16 -148.5q0 -70 -17 -132.5t-52 -109.5t-90.5 -75.5 t-130.5 -28.5q-45 -39 -103.5 -56.5t-118.5 -7.5q-47 -29 -106 -39v-200q0 -49 -17.5 -93.5t-49 -76t-74.5 -50t-93 -18.5q-51 0 -94 18.5t-74.5 50t-49 75.5t-17.5 94l-2 376v134q-47 -23 -98.5 -38.5t-104.5 -15.5q-57 0 -112.5 19.5t-98.5 54.5t-68.5 85t-25.5 112z M120 595q1 -7 1 -11q0 -37 16.5 -64.5t43 -46t59 -29t65.5 -10.5q49 0 90 15.5t79 34t75 35t78 16.5q0 -170 1 -338t1 -340q0 -51 31.5 -84t84.5 -33q51 0 82 32.5t31 84.5q0 90 1 178t1 178q14 -14 34.5 -26.5t43.5 -12.5q74 0 123 59q29 -20 67 -20q37 0 74 18.5t53 53.5 q12 -2 24.5 -3t27.5 -1q49 0 81.5 19t52 50t28 72t8.5 84q0 70 -16.5 137.5t-35 134t-35 133t-16.5 136.5h-643v-5q-16 -41 -35.5 -66.5t-42 -47t-48 -42t-56.5 -48.5q-41 -41 -78 -85t-88 -73q-53 -29 -117.5 -39t-124.5 -23l-12 -3t-8 -9q-2 -4 -1 -11zM1210 1223 q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -23t-23.5 -57z" />
197
- <glyph unicode="&#xf0a8;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l490 -490q20 -20 48.5 -20t49.5 20l74 74q20 20 20 48 t-20 50l-246 246h612q29 0 49.5 19.5t20.5 48.5v104q0 29 -20.5 49.5t-49.5 20.5h-612l246 246q20 20 20 48.5t-20 49.5l-74 74q-20 20 -48 20t-50 -20l-490 -490q-20 -20 -20 -49z" />
198
- <glyph unicode="&#xf0a9;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 717q0 -29 20.5 -49.5t48.5 -20.5h613l-246 -246q-20 -20 -20.5 -48.5 t20.5 -49.5l74 -74q20 -20 47.5 -20t50.5 20l489 490q20 20 20.5 49t-20.5 49l-489 490q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20.5 -48t20.5 -50l246 -246h-613q-29 0 -49 -19.5t-20 -48.5v-104z" />
199
- <glyph unicode="&#xf0aa;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l74 -74q20 -20 48 -20t50 20l246 246v-612q0 -29 19.5 -49.5 t47.5 -20.5h105q29 0 49.5 20.5t20.5 49.5v612l245 -246q20 -20 49 -20t50 20l73 74q20 20 20.5 48t-20.5 50l-489 490q-20 20 -49 20t-49 -20l-490 -490q-20 -20 -20 -49z" />
200
- <glyph unicode="&#xf0ab;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 769q0 -28 20 -50l490 -490q20 -20 48.5 -20t49.5 20l489 490q20 20 20.5 49 t-20.5 49l-73 74q-20 20 -48 20t-51 -20l-245 -246v612q0 29 -19.5 49.5t-48.5 20.5h-104q-29 0 -49.5 -20.5t-20.5 -49.5v-612l-246 246q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20 -48z" />
201
- <glyph unicode="&#xf0ac;" horiz-adv-x="1597" d="M0 768q0 162 63.5 307.5t173 255t254 173t308.5 63.5q162 0 307 -63.5t254.5 -173t173 -255t63.5 -307.5q0 -164 -63.5 -308.5t-173 -254t-254.5 -173t-307 -63.5q-164 0 -308.5 63.5t-254 173t-173 254t-63.5 308.5zM186 1141h4q4 0 12.5 3t8.5 -9q0 -4 -3 -10.5 t11 -6.5q4 0 5 6t3 0l4 -16v-2q0 -4 -5 -6t-3 -6q4 -4 9.5 -4h9.5l4 2l2 2q0 -6 6 -8.5t10 -2.5h2q0 -2 -4 -4t0 -6l23 -4v-2l14 -29q0 -4 -3 -10t-7 -6t-3 3t1 7t-2 7t-15 3q-2 0 -5 -1t-1 -5l12 -26l3 -2l2 -2q-10 0 -13.5 -24t-3.5 -34l4 -18l2 -6v-4l-4 -19l29 -43h6 q2 -4 -2 -8t-2 -8l8 -8q0 -10 4 -14.5t13 -12.5q-2 -12 20.5 -22.5t28.5 -14.5q8 -23 20 -45.5t29 -38.5l2 -14q0 -2 -5 -4t-1 -6l16 -7q4 4 10.5 -8t10.5 -16l-2 -6l12 -17l6 -2l4 8q-4 10 -14 26.5t-20.5 32t-17.5 28t-7 14.5t-2 16t-4 17q6 -4 15 -7.5t15 -7.5 q4 -25 19.5 -40t27.5 -34q-4 -4 0 -5t7 -1q4 -4 4 -14q14 -16 36.5 -44t22.5 -44v-2l-4 -14q6 -16 20.5 -25.5t28.5 -15.5h4q20 -10 41 -21.5t43 -19.5l23 14q8 -2 17 -10t20.5 -18.5t27 -19.5t35.5 -11q14 10 14 -5v-4l25 -30l4 -15q10 -6 20.5 -15t16.5 -20h4 q10 0 16.5 -9t16.5 -9q6 0 6 6q0 14 2 18.5t5 5.5t6 1t3 4l-4 6q-4 0 -6 -5t-6 -1l-14 -8l-17 4l-24 41l8 57q2 4 -7.5 9t-5.5 10q-14 8 -34 8q-4 0 -20.5 -3t-16.5 3t3 16t7 21.5t6 19.5t2 10l13 27l-3 4l-16 4q-4 0 -13 -6t-17.5 -14.5t-14.5 -16.5t-6 -14l-45 -10 q-14 0 -23 12q-4 16 -17 35.5t-13 34.5q0 23 8 43t-6 43q2 0 5 2t1 6l12 14l2 2l2 -2q14 10 37 7t29 14l16 -13q4 -2 9 4.5t5 10.5l-8 4l39 10l2 -6l19 2l22 -14q4 0 8 5t9 1l20 -21q-4 -8 -1 -12t3 -8q0 -6 10.5 -27.5t18.5 -21.5q10 0 9 13t-1 17q0 20 -8 39t-15 39v6 q0 10 12.5 17.5t12.5 9.5q10 8 22.5 16t18.5 19l8 16v10h6t4 6q0 2 -3 3.5t-7 5.5q-4 2 -8 6l6 4q4 6 6 15t-2 16l15 8q-2 -6 4 -8t10 0l10 16q-4 10 -5 7t5 7q10 4 19.5 9.5t19.5 5.5q2 -2 4 -2q6 0 6 2q0 10 -4 12l12 25q14 0 21 12l18 2q6 2 6 8v2l35 10l4 11l-10 14 q2 0 2 4t-4 6t-7 4t-7 4l-4 -2l4 2h6h13t9 9q0 12 -14 12q-18 0 -41.5 -8.5t-32.5 -28.5l-14 -8l18 18l3 6q0 4 -9.5 5.5t-5.5 1.5q18 0 27.5 4t15.5 9t12.5 10t18.5 9q23 -4 44 -2t44 2q6 4 12 8.5t8 10.5l23 4q4 -4 12 2t8 10q0 10 -11 13t-11 14q0 2 1 6t-3 4 q-6 0 -19.5 -6t-19.5 -10q-4 -2 -5 1t-1 7l2 -2l8 4l23 8l4 4q0 6 -7.5 8t-11.5 2t-12 -3t-8 3l2 4q-12 10 -21.5 22.5t-9.5 16.5t1 8.5t-5 4.5q-4 0 -7 -1t-3 5q0 4 -5 17t-14 13l-8 -8q0 -6 -6 -9t-6 -7h-4l-21 -12q-2 4 -5 2t-7 -2h-2l-2 -2q8 0 7 9t-7 9l-16 -4 q-4 0 -4.5 1t2 4t4.5 7t0 8t-6.5 1t-4.5 1h6l5 5q2 2 -1.5 7t-5.5 7l-22 4l-14 12q-2 -2 -7.5 3t-9.5 7l-16 -6l-39 9q-4 0 -8 -2.5t-4 -6.5t4 -6t4 -6t3 -21.5t-5 -13.5l-10 -14q2 -4 7 -7t10 -7.5t9 -10.5t2 -18l-45 -31v-4q0 -8 4 -15t8 -18q10 -4 9.5 -7t-7 -6t-12.5 -6 t-6 -5t-4 -2h-8h-4q0 2 2 3t2 5l-19 12v-2l-8 16q4 10 1 14.5t-3 10.5q0 16 -14.5 16t-30.5 -4q4 2 -1 6.5t-7 4.5q-16 0 -38 14t-36 14q-6 0 -14 -2t-15 -4q4 2 5 10l-13 23l-2 2q-6 0 -14 -5t-8 9q0 2 2 4t0 4q-2 12 5 20.5t11 18.5q4 4 4 8t4 4q8 0 15.5 4.5t17.5 6.5 l2 6q0 4 -21.5 7t-21.5 7l2 2q20 -6 30.5 -7t17.5 2t16.5 8t29.5 14q0 4 -21.5 8t-27.5 8h12q4 0 10.5 -2t10.5 -4q0 -4 6 -5t10 -1l15 10v6l-4 6l22 4q-2 2 1 4t5 2q6 0 12.5 -6t8.5 -6l20 8q-2 2 5.5 3t4.5 6l-14 16q-2 0 -3 3t1 3q10 0 6 10q-8 4 -17 9.5t-20 5.5 q-4 0 -9 -2t-5 -7q0 -4 5 -4t7 -4q4 -4 -2 -4t-6 -2q-8 0 -15 -12t-18 -17q-4 0 -3 2.5t-1 4.5q-2 4 -7 5t-5 5t5 13t-13 9q-8 0 -11.5 -6t-7.5 -12l-22 25l-17 2q0 8 3.5 14t-9.5 16q-6 4 -11 7.5t-11 3.5q-2 0 -9.5 -4.5t-13.5 -8.5t-6 -8t10 -4h-2q-6 0 -6 -8 q0 -2 9.5 -5t13.5 -3q4 2 6 -1.5t6 -3.5l8 3v-5q-2 -2 -2 -4l2 -8l-20 -10q-2 -2 -4 -2t-5 -2q0 -6 5.5 -12.5t-11.5 -6.5l-6 4q0 8 -16.5 13.5t-40 7.5t-47 3t-35.5 1l-33 -10l8 -19q-4 0 -5 -3t3 -5q-4 4 -15 14.5t-15 10.5l-17 4q-35 -2 -78 -33t-84 -72t-75.5 -84 t-53.5 -71zM471 674h2h-2zM487 1413q14 2 25.5 8t24.5 6l6 -4q6 -2 11 -2t9 -4q8 2 17 -2l6 4v8l-2 5l6 -2q6 0 12 10l-2 4q-4 2 -10 4t-10 2t-16.5 -5t-28 -11.5t-29.5 -12.5t-19 -8zM918 86q0 -4 3 -9t3 -9q0 -5 -2 -7q115 20 217 74.5t182 140.5h-2q-8 -4 -14 0l-5 -4 l-12 4h-4l-4 -8l2 8q-6 8 -14 15l-4 2q-4 0 -4 -8q2 16 -8.5 27.5t-26.5 11.5q0 -2 -2 -2h-4l-5 4h7l4 12l-11 8l-2 -2q-14 2 -20 16l-4 2l-2 -2l-4 -2q-12 -4 -21 -8q-12 4 -18 10l-27 -2q0 6 -4 12.5t-12 6.5q-10 0 -20.5 -2t-14.5 -13q0 -4 2 -8t4 -6v-8l-2 -6l-4 -2h-2 l-6 16l6 10q-2 4 -2 10.5t-2 10.5l-2 4h-6l-15 -10h-8l-4 -4q-2 -2 -2 -4t-2 -3l-2 3h-8q-8 -8 -9 -19l3 -4l-9 -6l-2 -4l-6 -4q0 -2 -1 -2t-1 -2v-2v-9l-2 -2v4l-2 2q-2 12 -23 21h-6v-4q2 -6 8.5 -10.5t10.5 -8.5q-2 2 -5 1t-3 -3v-4l14 -20v-39l4 -10q-4 -16 -16 -27v2 l-4 -2l-3 -2l-2 -10l2 -2v-2l-4 4l-2 -13l-12 -4q-6 -4 -5 -11t-5 -11l2 -4l-6 -6q0 -4 -1 -6.5t-1 -6.5l2 -14l6 -4l4 4l2 6l2 -12q0 -4 -4 -8q-6 -4 -12 -9.5t-6 -15.5z" />
202
- <glyph unicode="&#xf0ad;" horiz-adv-x="1593" d="M8 242q0 33 12.5 62.5t34.5 51.5l609 609q-16 66 -17 122q0 98 38 186.5t102.5 153t151.5 102.5t185 38q94 0 181.5 -36t154.5 -101l-442 -162l-43 -236l184 -153l443 159q-10 -92 -50.5 -171t-104 -137t-145 -91t-174.5 -33q-61 0 -127 17l-606 -607q-47 -47 -112 -47 q-68 0 -115 47q-23 23 -50.5 47.5t-52 52t-41 58.5t-16.5 68zM203 242q0 -33 22.5 -56.5t57.5 -23.5q33 0 56 23.5t23 56.5q0 35 -23.5 57.5t-55.5 22.5q-35 0 -57.5 -23t-22.5 -57z" />
203
- <glyph unicode="&#xf0ae;" d="M0 76v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM0 662v215q0 31 22.5 53t53.5 22h1689q33 0 55.5 -22.5t22.5 -52.5v-215q0 -33 -22.5 -55.5t-55.5 -22.5h-1689 q-31 0 -53.5 22.5t-22.5 55.5zM0 1243v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM752 692h999v154h-999v-154zM1059 109h692v153h-692v-153zM1366 1274h385v153h-385v-153z " />
204
- <glyph unicode="&#xf0b0;" horiz-adv-x="1566" d="M0 1458q0 33 22.5 55.5t55.5 22.5h1411q33 0 55.5 -22.5t22.5 -55.5t-23 -55l-565 -565v-791q0 -33 -22.5 -55.5t-55.5 -22.5t-55 23l-236 235q-23 23 -22 56v555l-565 565q-23 23 -23 55z" />
205
- <glyph unicode="&#xf0b1;" d="M0 115v512h713q-2 -6 -2 -19v-153q0 -55 38.5 -95.5t96.5 -40.5h153q55 0 94.5 40t39.5 96v153q0 12 -3 19h713v-512q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM0 743v371q0 47 34 81t81 34h424v231q0 31 21.5 53.5t53.5 22.5h615q33 0 55.5 -22.5 t22.5 -53.5v-231h422q47 0 80.5 -34t33.5 -81v-371h-1843zM692 1229h461v153h-461v-153zM825 455v153q0 18 21 19h153q18 0 19 -19v-153q0 -18 -19 -19h-153q-20 0 -21 19z" />
206
- <glyph unicode="&#xf0b2;" horiz-adv-x="1536" d="M0 80v477q0 51 24.5 61.5t59.5 -24.5l162 -162l340 338l-338 338l-164 -164q-35 -35 -59.5 -25.5t-24.5 60.5v477q0 31 23 57q27 23 57 23h477q51 0 61.5 -24.5t-24.5 -59.5l-160 -158l338 -338l332 334l-162 162q-35 35 -24.5 59.5t61.5 24.5h477q33 0 55 -23 q25 -25 25 -57v-477q0 -51 -24.5 -61.5t-59.5 24.5l-162 162l-334 -334l338 -336l158 160q35 35 59.5 24.5t24.5 -61.5v-477q0 -35 -25 -55q-23 -25 -55 -25h-477q-51 0 -61.5 24.5t24.5 59.5l166 166l-336 336l-340 -340l162 -162q35 -35 24.5 -59.5t-61.5 -24.5h-477 q-31 0 -55 25q-25 20 -25 55z" />
207
- <glyph unicode="&#xf0c0;" horiz-adv-x="1880" d="M0 852v152q0 18 1 47.5t10 56.5t29.5 46.5t57.5 19.5q-45 29 -71.5 75.5t-26.5 104.5q0 43 16.5 82t46 68.5t68.5 46t82 16.5q45 0 84 -16.5t67.5 -46t46 -68.5t17.5 -82q0 -57 -27.5 -104t-72.5 -76q37 0 57.5 -19.5t29.5 -46.5t11 -56.5t2 -47.5v-152 q-14 -8 -23.5 -18.5t-27.5 -10.5h-328q-16 0 -26.5 10.5t-22.5 18.5zM158 57v387q0 78 45 138.5t98 109.5q10 10 25.5 21.5t33.5 15.5q18 6 41 7t45 5q61 10 130 19.5t135 19.5q-90 57 -144.5 151.5t-54.5 207.5q0 88 34 166.5t92 136t136 91.5t166 34t166 -34t136 -91.5 t92 -136t34 -166.5q0 -113 -54 -207t-145 -152q66 -10 134.5 -19t130.5 -20q23 -4 45 -5t41 -7q18 -4 33.5 -15.5t27.5 -21.5q66 -59 103.5 -116.5t37.5 -131.5v-387q-12 -6 -20 -13t-18.5 -14t-23.5 -14.5t-36 -15.5h-1368q-35 0 -54.5 22.5t-43.5 34.5zM1452 852v152 q0 18 2 47.5t11.5 56.5t30 46.5t56.5 19.5q-45 29 -72.5 75.5t-27.5 104.5q0 43 16.5 82t46 68.5t68.5 46t84 16.5q43 0 82 -16.5t68.5 -46t46 -68.5t16.5 -82q0 -57 -26.5 -104t-71.5 -76q37 0 56.5 -19.5t28.5 -46.5t11 -56.5t2 -47.5v-152q-12 -8 -22.5 -18.5 t-26.5 -10.5h-328q-18 0 -27.5 10.5t-23.5 18.5z" />
208
- <glyph unicode="&#xf0c1;" horiz-adv-x="1597" d="M0 1137q0 88 34 166.5t92 137t136 92.5t168 34q86 0 166 -33t139 -92q8 -8 21.5 -20.5t26 -25t21.5 -25.5t9 -25q0 -18 -12 -31q-6 -8 -25 -12q-47 -10 -88 -22.5t-86 -31.5q-4 -4 -16 -4t-25.5 10.5t-31 21.5t-42 21.5t-57.5 10.5q-35 0 -66.5 -13.5t-54 -37t-36 -54 t-13.5 -67.5q0 -41 17.5 -75t43 -63.5t56.5 -56.5t57 -53l180 -178q23 -25 54.5 -37t66.5 -12q43 0 73 16t46 16q12 0 39 -21.5t55.5 -49t50 -55t21.5 -42.5q0 -29 -36 -51t-83 -38.5t-94 -26t-72 -9.5q-86 0 -164.5 33t-140.5 92l-303 305q-61 59 -94 139.5t-33 166.5z M578 1010q0 29 35.5 51t82.5 38.5t94 26t72 9.5q86 0 166 -33t139 -92l303 -305q61 -59 94 -139.5t33 -166.5q0 -90 -33.5 -167.5t-92 -136t-137.5 -92.5t-167 -34q-86 0 -165.5 34t-139.5 93q-8 8 -21.5 19.5t-25.5 25t-21.5 26.5t-9.5 26q0 18 13 28q6 8 24 12 q47 10 88 22.5t86 33.5q12 4 17 4q12 0 25.5 -10.5t30.5 -21.5t41 -21.5t58 -10.5q72 0 121 49.5t49 120.5q0 41 -17 76t-44 63.5t-56.5 55.5t-56.5 53l-178 180q-53 49 -123 50q-43 0 -72.5 -17.5t-46.5 -17.5q-12 0 -38.5 21.5t-55 49t-50 56t-21.5 41.5z" />
209
- <glyph unicode="&#xf0c2;" horiz-adv-x="1880" d="M0 391q0 70 23.5 132.5t64.5 113.5t96.5 86t120.5 51q-33 41 -51 90t-18 105q0 66 24.5 123t66.5 99t99 66.5t123 24.5q113 0 196 -72q18 76 61.5 141.5t103 113.5t133 75t157.5 27q96 0 182 -37t149.5 -100.5t100.5 -149.5t37 -182q0 -57 -13 -109.5t-36 -99.5 q117 -59 188.5 -170t71.5 -248q0 -98 -37 -183t-101.5 -149.5t-149.5 -101.5t-183 -37h-1018q-80 0 -151.5 30.5t-125 84t-84 125t-30.5 151.5z" />
210
- <glyph unicode="&#xf0c3;" horiz-adv-x="1536" d="M16 72q-39 72 7 141l516 803v366h-78q-33 0 -54.5 22.5t-21.5 55.5q0 31 21.5 53.5t54.5 22.5h614q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-76v-368l514 -801q45 -70 7 -141q-18 -35 -51 -53.5t-70 -18.5h-1262q-37 0 -69.5 18.5t-51.5 53.5z M377 479h782l-313 490v413h-154v-411z" />
211
- <glyph unicode="&#xf0c4;" horiz-adv-x="1916" d="M0 180q0 86 44 168t113.5 146.5t154.5 103.5t169 39h13q18 25 57 60.5t63 58.5v12v12q-12 12 -28.5 27.5t-35 32t-33.5 32t-23 27.5q-84 -6 -172.5 33t-160 105.5t-116.5 150.5t-45 168q0 98 62.5 154.5t160.5 56.5q82 0 168 -39t155.5 -103.5t114 -146.5t44.5 -168 q0 -10 -1.5 -21.5t-3.5 -21.5l86 -76l34 17q34 18 90.5 46.5t129 65.5t148.5 76t150.5 77t135 69.5t102.5 52t52 26.5q16 8 37 9q14 0 39 -4.5t52.5 -9.5t53 -11t41.5 -8q29 -4 47.5 -26.5t18.5 -51.5q0 -43 -35 -66l-700 -485l700 -485q35 -23 35 -66q0 -29 -18.5 -51.5 t-47.5 -26.5q-16 -4 -41.5 -9t-53 -10t-52.5 -9.5t-39 -4.5q-10 0 -18.5 2.5t-18.5 6.5l-842 430l-86 -76q2 -10 3.5 -21.5t1.5 -21.5q0 -86 -44.5 -168t-114 -146.5t-155.5 -103.5t-168 -39q-98 0 -160.5 56.5t-62.5 154.5zM197 1358q0 -23 11 -49.5t27.5 -51t35 -45 t34.5 -34.5q35 -29 82 -54.5t94 -25.5q10 0 27 4v6q0 23 -11.5 48.5t-27.5 50t-34.5 46t-35.5 35.5q-35 29 -82 54.5t-94 25.5q-14 0 -26 -4v-6zM199 180q0 -6 2 -10q6 0 11 -1t11 -1q41 0 90 24.5t92.5 61.5t72 83t28.5 89q0 4 -1 5t-1 5q-8 2 -23 2q-41 0 -90 -24.5 t-92 -61.5t-71.5 -83t-28.5 -89zM586 616q53 -25 82 -69l108 96l45 -27l1016 703l-172 31l-975 -498l6 -127zM586 920l35 -35q12 29 36.5 41t53.5 26l-43 37q-29 -45 -82 -69zM741 768q0 35 23.5 57.5t58.5 22.5q33 0 55.5 -22.5t22.5 -57.5q0 -33 -22.5 -56.5t-57.5 -23.5 q-33 0 -56.5 23.5t-23.5 56.5zM903 575l762 -389l172 31l-727 502z" />
212
- <glyph unicode="&#xf0c5;" horiz-adv-x="1597" d="M0 385v707q0 33 16.5 70.5t38.5 60.5l258 258q23 23 61 39t70 16h463q31 0 53.5 -22.5t22.5 -53.5v-250q16 8 35.5 13.5t40.5 5.5h463q31 0 53 -22.5t22 -53.5v-1075q0 -33 -22.5 -55.5t-52.5 -22.5h-830q-33 0 -55.5 22.5t-22.5 55.5v229h-536q-33 0 -55.5 22.5 t-22.5 55.5zM154 461h460v293q0 45 10.5 87t45.5 74l159 162v305h-278v-321q0 -31 -22.5 -53.5t-53.5 -22.5h-321v-524zM186 1139h211v211zM768 154h676v921h-279v-321q0 -31 -22.5 -53.5t-52.5 -22.5h-322v-524zM801 831h211v211z" />
213
- <glyph unicode="&#xf0c6;" horiz-adv-x="1470" d="M0 1128q0 90 35 170t94 139.5t139 94.5t170 35q88 0 169 -34t143 -95l655 -656q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-655 655q-41 41 -92 61.5t-107 20.5q-57 0 -108 -21.5t-89 -59.5t-59.5 -89t-21.5 -109q0 -55 20.5 -106 t61.5 -92l745 -746q55 -55 133 -55q39 0 74 15.5t60.5 41t41 60.5t15.5 73q0 78 -56 134l-563 563q-29 29 -69 28q-41 0 -71 -29.5t-30 -70.5t29 -70l475 -475q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-475 473q-35 37 -55.5 85 t-20.5 99q0 53 20.5 100.5t55.5 83t83.5 56t101.5 20.5q51 0 99 -20.5t85 -55.5l561 -563q102 -102 102 -246q0 -74 -27.5 -137t-74.5 -110t-110.5 -75t-137.5 -28q-143 0 -246 103l-745 745q-61 61 -95 142t-34 169z" />
214
- <glyph unicode="&#xf0c7;" horiz-adv-x="1536" d="M0 154v1228q0 63 45 108.5t109 45.5h1075q63 0 108 -45l154 -154q45 -45 45 -108v-1075q0 -63 -45 -108.5t-109 -45.5h-1228q-63 0 -108.5 45t-45.5 109zM154 846h1075v536h-1075v-536zM846 922v385h190v-385h-190z" />
215
- <glyph unicode="&#xf0c8;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5z" />
216
- <glyph unicode="&#xf0c9;" d="M0 78v215q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-215q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 659v218q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-218q0 -31 -22.5 -53t-53.5 -22h-1689 q-33 0 -55.5 22.5t-22.5 52.5zM0 1243v217q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 53.5z" />
217
- <glyph unicode="&#xf0ca;" d="M0 211q0 39 15.5 75t41 61.5t60.5 40.5t76 15q39 0 73.5 -15t61 -40.5t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-80 0 -136.5 56.5t-56.5 136.5zM0 768q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75 q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-41 0 -76 15.5t-60.5 41t-41 60.5t-15.5 76zM0 1325q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -40.5t-73 -15q-41 0 -76 15t-60.5 40.5t-41 60.5 t-15.5 76zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5 h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z" />
218
- <glyph unicode="&#xf0cb;" d="M0 594q0 55 30.5 90t68.5 61.5t69 50t31 56.5q0 29 -17.5 44t-46.5 15q-25 0 -44 -15t-34 -36l-53 37q23 39 58.5 60.5t78.5 21.5q55 0 96.5 -32t41.5 -91q0 -49 -30 -80t-67 -55.5t-67.5 -47t-30.5 -55.5h143v54h66v-115h-289q-2 10 -3 18.5t-1 18.5zM4 55l37 54 q6 -4 12 -10.5t15 -10.5q12 -8 29.5 -14t37.5 -6q35 0 55.5 18t20.5 47q0 31 -23.5 48.5t-58.5 17.5h-23l-16 37l90 108l6 6t7 6l4 6h-9q-4 -2 -14 -2h-92v-49h-66v111h263v-53l-97 -115q41 -6 74 -35t33 -82t-38 -95t-110 -42q-35 0 -60.5 9t-41.5 20q-25 14 -35 26z M14 1434l105 102h67v-360h93v-62h-259v62h93v258v8h-2q-10 -16 -22.5 -28.5t-29.5 -27.5zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5 t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z " />
219
- <glyph unicode="&#xf0cc;" horiz-adv-x="1536" d="M0 692v152h1536v-152h-1536zM268 1114q0 117 44 202t118 141t170 83t203 27q88 0 176 -20.5t172 -49.5q20 -72 27.5 -156t7.5 -157q0 -10 -1 -22.5t-3 -24.5l-13 -2q-23 2 -50 2t-50 6q-18 59 -44 114.5t-62.5 98.5t-88 68.5t-122.5 25.5q-49 0 -94.5 -13.5t-80 -40 t-56 -66.5t-21.5 -93q0 -59 28.5 -102t75.5 -75t105.5 -54.5t118 -42t113.5 -39t93 -41.5h-696q-33 53 -51.5 110.5t-18.5 120.5zM285 310v63v45l110 2q31 -72 64 -134.5t76 -108.5t104 -71.5t152 -25.5q55 0 110 16.5t100.5 48t74 78.5t28.5 109q0 76 -49 128t-119 88 t-146.5 59.5t-132.5 45.5h617q8 -16 15 -38.5t10.5 -48t5.5 -50t2 -43.5q0 -131 -47.5 -226t-127 -156.5t-186 -91.5t-225.5 -30q-53 0 -93 4t-78 12.5t-78 20.5t-93 29q-12 4 -38 12t-36 16q-8 6 -12 50.5t-6 96.5t-2 100z" />
220
- <glyph unicode="&#xf0cd;" horiz-adv-x="1536" d="M0 0v154h1536v-154h-1536zM0 1532q10 2 19.5 2h19.5q72 0 140.5 -5t137.5 -5q100 0 200.5 2t199.5 6q-4 -16 -1 -36.5t3 -37.5v-8q-66 -10 -108 -7t-65.5 -5t-32.5 -39t-9 -109q0 -137 4 -272t10 -273q8 -147 88 -237t238 -90q125 0 207 29.5t131 88t69.5 146.5t20.5 203 q0 20 -2 65t-5 102.5t-8.5 119t-11.5 113.5t-13 89t-15 45q-33 33 -78 33q-6 0 -23.5 -1t-36 -1t-34 1t-21.5 3l2 82q82 4 163 -3t165 -7q39 0 77.5 5t79.5 5q4 0 9.5 -1t9.5 -1q2 -12 4 -24.5t2 -24.5t-4 -29q-23 -6 -52.5 -8t-58 -7t-48 -16.5t-19.5 -38.5q0 -14 1 -27 t3 -28q2 -6 5 -38.5t5 -79t4 -101.5t4 -103t3 -85t1 -50q0 -37 -2 -80.5t-8 -89t-17.5 -87.5t-29.5 -74q-41 -68 -104.5 -114t-137 -72.5t-153.5 -38t-154 -11.5q-72 0 -144.5 9.5t-140.5 35.5q-96 35 -151 88.5t-84 121t-36 148.5t-7 173v321v42t-1 62.5t-5 60.5t-10 38 q-12 16 -37 23.5t-53.5 10.5t-56.5 3t-44 4z" />
221
- <glyph unicode="&#xf0ce;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h460v335h-460v-335zM154 565h460v332h-460v-332zM154 975h460v332h-460v-332zM692 154h461v335h-461v-335zM692 565h461v332h-461v-332z M692 975h461v332h-461v-332zM1229 154h461v335h-461v-335zM1229 565h461v332h-461v-332zM1229 975h461v332h-461v-332z" />
222
- <glyph unicode="&#xf0d0;" d="M0 197q0 39 29 61l1579 1247q20 17 47 17q35 0 59 -29q10 -12 29.5 -33.5t38 -44t32 -47.5t13.5 -43q0 -39 -29 -61l-1579 -1248q-20 -16 -47 -16q-37 0 -59 29q-10 12 -30 33.5t-38 44t-31.5 47t-13.5 43.5zM256 922l117 36l37 117l34 -117l119 -36l-119 -37l-34 -117 l-37 117zM373 1229l235 71l72 236l72 -236l235 -71l-235 -72l-72 -235l-72 235zM942 1382l117 37l37 117l37 -117l116 -37l-116 -36l-37 -117l-37 117zM1286 1153l94 -121l369 291l-94 121zM1536 885l117 35l37 118l36 -118l117 -35l-117 -37l-36 -117l-37 117z" />
223
- <glyph unicode="&#xf0d1;" d="M0 358v404q0 25 6 51.5t17.5 53t27 51t31.5 40.5l223 222q16 16 41 31.5t51.5 26.5t53 17.5t51.5 6.5h80v198q0 31 22.5 53.5t52.5 22.5h1108q33 0 55.5 -22.5t22.5 -53.5v-1102q0 -31 -22.5 -53t-55.5 -22h-75v-7q0 -63 -25 -119.5t-65.5 -97.5t-97 -65.5t-120.5 -24.5 q-63 0 -119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-307v-7q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5t-119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-78q-31 0 -53.5 22.5t-22.5 52.5zM193 700h387v369h-78q-10 0 -31.5 -8t-30.5 -17l-223 -221 q-8 -8 -16 -29.5t-8 -31.5v-62zM346 276q0 -47 34 -80.5t81 -33.5t80.5 33.5t33.5 80.5t-33.5 81t-80.5 34t-81 -33.5t-34 -81.5zM1268 276q0 -47 33.5 -80.5t80.5 -33.5t81 33.5t34 80.5t-33.5 81t-81.5 34q-47 0 -80.5 -33.5t-33.5 -81.5z" />
224
- <glyph unicode="&#xf0d2;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5q-59 0 -115.5 8.5t-112.5 24.5q23 35 46.5 80t35.5 92l11 41q6 23 16 66t29 112q23 -41 76 -70.5t118 -29.5q96 0 176 41 t136.5 114.5t88 174t31.5 217.5q0 88 -35.5 171t-102.5 147.5t-160 102t-208 37.5q-141 0 -248.5 -46t-179 -118.5t-107.5 -160.5t-36 -174q0 -104 40 -187.5t124 -117.5q31 -10 41 20q2 10 7 31.5t9 32.5q4 16 1 23t-13 22q-53 59 -53 155q0 76 27.5 145.5t78.5 122t124 84 t163 31.5q80 0 142.5 -23.5t105.5 -64.5t64.5 -96t21.5 -121q0 -86 -18.5 -164t-52.5 -136t-80 -92t-103 -34q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 76 44.5 151.5t26.5 130.5q0 49 -26.5 84t-81.5 35q-66 0 -110 -58.5t-44 -146.5q-2 -23 2 -45q2 -18 7.5 -40.5 t15.5 -41.5q-33 -141 -53.5 -225t-30.5 -131q-12 -55 -18 -80q-10 -45 -13.5 -93t-1.5 -89q-104 45 -192 119.5t-151.5 169t-98.5 207t-35 235.5z" />
225
- <glyph unicode="&#xf0d3;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-829q27 39 59.5 95.5t49.5 117.5l10 41q6 25 17.5 68t29.5 112q20 -41 75.5 -70.5t121.5 -29.5q96 0 176 42t137 115.5 t89 175t32 220.5q0 90 -37 173t-103.5 147.5t-161 102.5t-208.5 38q-143 0 -251 -46.5t-180.5 -120t-108.5 -162.5t-36 -175q0 -104 40 -188.5t124 -118.5q14 -6 25.5 -1t15.5 21q4 10 8 31.5t8 34.5q8 23 -12 43q-23 29 -37 67.5t-14 91.5q0 76 27.5 145.5t79 123t124 85 t164.5 31.5q82 0 144.5 -23.5t105.5 -64.5t64.5 -97t21.5 -124q0 -86 -18.5 -164t-52 -136t-81 -93t-104.5 -35q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 78 45 154.5t27 131.5q0 49 -26.5 85t-82.5 36q-66 0 -110.5 -59t-44.5 -150q-2 -23 2 -45q4 -43 22 -84 q-35 -141 -54.5 -226t-29.5 -132q-12 -55 -18 -80q-16 -70 -14 -142.5t6 -117.5h-260q-80 0 -136.5 56.5t-56.5 136.5z" />
226
- <glyph unicode="&#xf0d4;" horiz-adv-x="1536" d="M0 342v438q55 -68 120.5 -96.5t153.5 -28.5h36t34 4q-8 -23 -14 -42t-6 -42q0 -41 18 -77.5t43 -67.5q-104 -4 -198.5 -22.5t-186.5 -65.5zM0 1214v129q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5 t-61.5 -41t-75 -15.5h-583q23 39 36 81t13 89q0 70 -21.5 121t-54.5 90t-70.5 69.5t-70.5 57.5t-54.5 53.5t-21.5 59.5q0 49 34 81.5t76 72.5t75.5 99.5t33.5 163.5q0 78 -39 157t-106 122h131l133 76h-428q-129 0 -237.5 -36t-188.5 -143zM2 170q14 57 55 96t96.5 61.5 t115 33t110.5 10.5h31.5t31.5 -2q37 -27 78 -54.5t75 -61.5t55.5 -75t21.5 -92q0 -47 -19 -86h-460q-72 0 -126.5 49t-64.5 121zM102 1094q0 43 11.5 85t35 73.5t59.5 51t85 19.5q68 0 118 -41t81.5 -100.5t47 -128t15.5 -123.5q0 -45 -9 -84t-30.5 -68.5t-56.5 -47 t-84 -17.5q-66 0 -116 39t-85 96t-53.5 123.5t-18.5 122.5zM854 1051h223v-224h109v224h223v108h-223v225h-109v-225h-223v-108z" />
227
- <glyph unicode="&#xf0d5;" horiz-adv-x="1536" d="M0 262q0 100 56.5 166t139.5 105.5t179 56t174 18.5q-23 29 -41.5 64t-18.5 76q0 23 6.5 41t14.5 40q-16 -4 -33.5 -4h-34.5q-68 0 -130 23.5t-108 66.5t-74 101.5t-28 130.5q0 68 25 128t67 109.5t98 84t120 49.5q88 18 176 18h411l-127 -74h-127q72 -43 107 -120.5 t35 -157.5q0 -94 -33 -149.5t-73 -94.5t-72.5 -70.5t-32.5 -78.5q0 -45 44 -82t97 -82t97 -107.5t44 -161.5q0 -102 -50 -175.5t-126.5 -121t-170 -70t-181.5 -22.5q-66 0 -141.5 15.5t-140 50.5t-106.5 90t-42 137zM174 307q0 -68 35 -116t87 -78.5t114.5 -44t117.5 -13.5 q51 0 104.5 11.5t96.5 38t69.5 68.5t26.5 103q0 49 -21.5 89.5t-53 72t-70.5 59t-76 52.5q-14 2 -29.5 3t-29.5 1q-57 0 -123 -12.5t-121 -41t-91 -75.5t-36 -117zM276 1247q0 -53 17.5 -117.5t51.5 -120t82.5 -92t111.5 -36.5q96 0 134 61.5t38 147.5q0 53 -14.5 118.5 t-45 124t-78 97t-112.5 38.5q-47 0 -82 -18t-57.5 -49t-34 -71t-11.5 -83zM999 1206h215v-215h107v215h215v105h-215v217h-107v-217h-215v-105z" />
228
- <glyph unicode="&#xf0d6;" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-1382q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 461q63 0 119.5 -24.5t97.5 -65.5t65.5 -97.5t24.5 -119.5h921q0 63 25 119.5t65.5 97.5t97 65.5t120.5 24.5v614 q-63 0 -120 24.5t-97.5 65.5t-65.5 97.5t-25 119.5h-921q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5v-614zM539 768q0 104 29.5 195.5t81.5 159t122 106.5t150 39t149.5 -39t121.5 -106.5t83 -159t31 -195.5t-31 -195.5t-83 -159t-122 -106.5t-149 -39 q-80 0 -150 39t-122 106.5t-81.5 159t-29.5 195.5zM692 969l94 -99l39 35q8 6 11.5 13.5t7.5 11.5q4 2 8 10h2v-16q0 -8 -1 -16.5t-1 -18.5v-283h-139v-129h438v129h-141v529h-140z" />
229
- <glyph unicode="&#xf0d7;" horiz-adv-x="1228" d="M6 967q20 47 72 47h1075q50 0 70 -47t-17 -84l-536 -537q-27 -23 -56 -22q-29 0 -55 22l-536 537q-37 37 -17 84z" />
230
- <glyph unicode="&#xf0d8;" horiz-adv-x="1228" d="M6 371q-20 47 17 84l536 536q23 23 55 23q31 0 54 -23l538 -536q37 -37 17 -84t-70 -47h-1077q-50 0 -70 47z" />
231
- <glyph unicode="&#xf0d9;" horiz-adv-x="692" d="M0 768q0 33 23 55l538 537q16 16 38 21t44 -5q23 -8 36 -27.5t13 -41.5v-1076q0 -25 -13 -43t-36 -28t-44 -5t-38 21l-538 539q-23 23 -23 53z" />
232
- <glyph unicode="&#xf0da;" horiz-adv-x="692" d="M0 231v1076q0 49 47 69t84 -16l539 -537q23 -23 22 -55q0 -31 -22 -53l-539 -539q-37 -37 -84 -16q-47 20 -47 71z" />
233
- <glyph unicode="&#xf0db;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h692v1153h-692v-1153zM999 154h691v1153h-691v-1153z" />
234
- <glyph unicode="&#xf0dc;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1075q33 0 55.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23t-55 23l-536 536q-23 23 -23 56zM0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-55.5 -23.5h-1075 q-31 0 -53.5 23t-22.5 55z" />
235
- <glyph unicode="&#xf0dd;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1077q31 0 53.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23q-35 0 -53 23l-538 536q-23 23 -23 56z" />
236
- <glyph unicode="&#xf0de;" horiz-adv-x="1228" d="M0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-53.5 -23.5h-1077q-31 0 -53.5 23t-22.5 55z" />
237
- <glyph unicode="&#xf0e0;" d="M0 115v905q10 -10 20.5 -17.5t20.5 -15.5q129 -96 256 -191.5t252 -195.5q39 -31 82 -62.5t89 -57t96.5 -41t103.5 -15.5q55 0 105 15.5t96 40t89 56t84 64.5q125 100 252 195.5t256 191.5q10 8 20.5 15.5t20.5 17.5v-905q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34 t-34 81zM2 1434q0 41 36 71.5t77 30.5h1614q41 0 76.5 -30.5t35.5 -71.5q0 -31 -18.5 -69t-45 -75t-57 -67.5t-53.5 -48.5q-123 -92 -241.5 -182.5t-239.5 -182.5q-25 -18 -57.5 -45t-67.5 -51.5t-71 -42t-66 -17.5h-2h-2q-31 0 -67 17.5t-70.5 42t-67.5 51.5t-58 45 q-121 92 -239.5 182t-241.5 183q-23 18 -53.5 48.5t-57 67.5t-45 75t-18.5 69z" />
238
- <glyph unicode="&#xf0e1;" horiz-adv-x="1576" d="M0 1376q0 39 15.5 74t41 60.5t60 41t73.5 15.5t74 -15.5t61.5 -41t41 -60.5t14.5 -74t-14.5 -73.5t-41 -60t-61.5 -41t-74 -15.5t-73.5 15.5t-60 41t-41 60t-15.5 73.5zM10 41v991q0 16 12.5 28.5t28.5 12.5h281q16 0 28.5 -12t12.5 -29v-991q0 -16 -12.5 -28.5 t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5zM524 41v991q0 16 12.5 28.5t28.5 12.5h273q33 0 37 -25.5t4 -48.5q57 53 129.5 76t150.5 23q190 0 304 -95.5t114 -293.5v-668q0 -16 -12.5 -28.5t-28.5 -12.5h-289q-16 0 -27.5 12.5t-11.5 28.5v604q0 76 -27.5 116 t-111.5 40q-53 0 -89 -17.5t-56.5 -47t-28.5 -70.5t-8 -88v-537q0 -16 -12.5 -28.5t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5z" />
239
- <glyph unicode="&#xf0e2;" horiz-adv-x="1591" d="M0 662q-4 39 35 45l158 20q12 2 30 -8q12 -8 15 -27q14 -102 63 -191t123 -153.5t169 -101.5t200 -37q115 0 217 44t178 120t120 177t44 218t-44 218t-120 177t-178.5 120t-216.5 44q-94 0 -181.5 -30.5t-158.5 -88.5l159 -159q35 -35 24 -58.5t-58 -23.5h-463 q-16 0 -29.5 6t-24.5 16q-25 25 -24 55v463q0 47 24.5 57.5t59.5 -24.5l162 -162q109 92 238.5 140.5t271.5 48.5q166 0 311 -62.5t253.5 -171t171 -254t62.5 -311.5t-62.5 -311.5t-171 -254t-254 -171t-310.5 -62.5q-150 0 -285 52.5t-241.5 145.5t-176.5 220t-90 275z" />
240
- <glyph unicode="&#xf0e3;" horiz-adv-x="1916" d="M0 651q0 49 37 91t88 42q35 0 68 -22q-20 14 -21 37q0 8 8 24l334 502q14 20 37 21q16 0 24 -9q-25 18 -40 43t-15 56q0 49 38 90t87 41q33 0 62 -19l514 -342q23 -16 36 -40.5t13 -53.5q0 -25 -10.5 -48.5t-26.5 -41.5t-40 -29.5t-48 -11.5q-33 0 -68 23q20 -14 21 -37 q0 -14 -8 -25l-105 -158l227 -151q14 4 28 6t28 2q53 0 94 -29l475 -315q37 -27 58.5 -65.5t21.5 -84.5q0 -74 -52.5 -126t-125.5 -52q-55 0 -99 31l-475 315q-70 47 -75 131l-228 152l-106 -158q-14 -20 -37 -20q-14 0 -25 8q55 -39 56 -100q0 -25 -10.5 -47.5t-28 -41 t-40 -29.5t-46.5 -11q-35 0 -62 18l-514 342q-49 33 -49 92z" />
241
- <glyph unicode="&#xf0e4;" horiz-adv-x="1880" d="M0 627q0 195 73.5 365.5t201.5 298.5t299 202t366 74t366 -74t299 -202t201.5 -299t73.5 -365q0 -78 -14.5 -159t-42 -159t-68.5 -149.5t-92 -130.5q-23 -29 -59 -29h-1328q-37 0 -59 29q-53 59 -93 130.5t-67.5 149.5t-42 159t-14.5 159zM158 627q0 -49 33.5 -83 t82.5 -34t83 34t34 83t-34.5 82.5t-82.5 33.5q-49 0 -82.5 -33.5t-33.5 -82.5zM352 1098q0 -49 35 -84t82 -35q49 0 84 35t35 84t-35 82.5t-84 33.5q-47 0 -82 -33.5t-35 -82.5zM743 313q0 -82 57.5 -139t139.5 -57t139.5 57t57.5 139q0 49 -26 91t-67 71q4 14 15.5 55 t27 95.5t33 114t30.5 110.5t22.5 88t9.5 43q0 23 -17.5 40t-40.5 17q-20 0 -35.5 -12t-21.5 -31l-135 -487q-39 -2 -74 -17.5t-60.5 -42t-40 -61.5t-14.5 -74zM823 1292q0 -49 34 -82.5t83 -33.5t83 33.5t34 82.5t-34 83t-83 34t-83 -34t-34 -83zM1292 1098q0 -49 35 -83 t84 -34t83 34t34 83t-34 82.5t-83 33.5t-84 -33.5t-35 -82.5zM1489 627q0 -49 34 -83t83 -34t82.5 34t33.5 83t-33.5 82.5t-82.5 33.5t-83 -33.5t-34 -82.5z" />
242
- <glyph unicode="&#xf0e5;" horiz-adv-x="1916" d="M0 866q0 123 49 225.5t130 183.5t184.5 139.5t209.5 92.5q94 31 190.5 45.5t194.5 14.5t194.5 -14.5t190.5 -45.5q106 -35 210 -93t185 -139t130 -183.5t49 -225.5t-49 -225t-130 -183t-184.5 -140.5t-210.5 -92.5q-94 -31 -190 -45t-195 -14q-92 0 -180 12 q-92 -72 -195.5 -119t-215.5 -73q-27 -4 -55.5 -10.5t-53.5 -6.5q-16 0 -27.5 11.5t-11.5 27.5q0 12 8.5 21.5t16.5 17.5q31 33 53 60.5t37.5 57.5t25 64.5t17.5 79.5q-78 43 -145.5 100.5t-120 128t-82 153.5t-29.5 175zM160 866q0 -72 24.5 -133t65.5 -113.5t94 -95.5 t111 -75q27 -14 51 -27.5t49 -28.5q-10 -47 -17.5 -94t-19.5 -94q59 29 111.5 64.5t105.5 76.5q55 -8 110.5 -14t112.5 -6q156 0 308 43q84 25 171 68.5t158.5 107t116.5 143.5t45 178t-45 178t-116.5 143.5t-158.5 107.5t-171 69q-152 43 -308 43q-158 0 -307 -43 q-84 -25 -171 -69t-158.5 -107.5t-116.5 -143t-45 -178.5z" />
243
- <glyph unicode="&#xf0e6;" horiz-adv-x="1916" d="M0 997q0 98 40 182.5t106.5 151t150.5 113.5t170 76q76 25 154.5 36t156.5 11q80 0 159 -11.5t155 -35.5q86 -29 170 -76t149.5 -113.5t105 -150.5t39.5 -183q0 -98 -39.5 -182t-105 -149.5t-149.5 -113.5t-170 -77q-154 -47 -314 -47q-37 0 -72.5 3t-72.5 7 q-150 -115 -336 -155q-20 -4 -43 -9.5t-45 -5.5q-12 0 -21.5 9.5t-9.5 23.5q0 10 7.5 17.5l13.5 13.5q51 51 72.5 96t35.5 117q-63 35 -118.5 82t-97.5 104t-66.5 124t-24.5 142zM160 997q0 -72 30.5 -127t77.5 -99t104.5 -78t112.5 -64l-20 -111q33 18 63.5 42t59.5 46 q47 -6 95 -12t95 -6q135 0 264 41q61 18 124 52t114 81t84 105.5t33 129.5q0 72 -33 131.5t-84 105.5t-113.5 80t-124.5 52q-63 23 -129.5 32t-134.5 9q-66 0 -132 -9t-132 -32q-59 -18 -122.5 -52t-115 -80t-84 -105.5t-32.5 -131.5zM649 258l27 16q51 -6 102 -6 q197 0 381 62q111 37 211 99.5t177 147.5t123 190t46 230q0 41 -6 84q90 -72 148.5 -169t58.5 -214q0 -76 -24.5 -142.5t-66.5 -123.5t-97.5 -104t-118.5 -82q14 -72 35.5 -117t72.5 -96q6 -6 13.5 -14.5t7.5 -18.5q0 -16 -10.5 -23.5t-24.5 -7.5q-20 0 -43 5.5t-41 9.5 q-186 41 -336 155q-37 -4 -72.5 -7t-72.5 -3q-129 0 -254 32t-236 97z" />
244
- <glyph unicode="&#xf0e7;" horiz-adv-x="933" d="M0 557q0 8 2 10l209 932q4 16 16.5 26.5t28.5 10.5h344q18 0 31.5 -13.5t13.5 -33.5q0 -6 -1 -10t-3 -11l-180 -524q12 4 47 13.5t81 21.5t95 26.5t93 25.5t75 18.5t37 7.5q18 0 31.5 -13.5t13.5 -33.5q0 -12 -2 -19l-565 -1306q-10 -29 -43 -29q-18 0 -33 13.5t-15 33.5 q0 6 3 10l204 914q-12 -4 -48 -14.5t-82 -22.5t-97 -26.5t-95 -27t-76 -19.5t-38 -7q-20 0 -33.5 14.5t-13.5 32.5z" />
245
- <glyph unicode="&#xf0e8;" d="M0 78v383q0 33 22.5 55.5t55.5 22.5h133v153q0 55 40 94t95 39h518v174h-135q-31 0 -53.5 21.5t-22.5 54.5v385q0 31 22.5 53.5t53.5 22.5h385q31 0 53.5 -22.5t22.5 -53.5v-385q0 -33 -22.5 -54.5t-53.5 -21.5h-135v-174h518q55 0 95 -38.5t40 -94.5v-153h135 q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-33 0 -54 22.5t-21 55.5v383q0 33 21.5 55.5t53.5 22.5h136v153q0 18 -21 19h-518v-172h135q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-31 0 -53.5 22.5t-22.5 55.5v383 q0 33 22.5 55.5t53.5 22.5h135v172h-518q-20 0 -20 -19v-153h135q33 0 55.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-55.5 -22.5h-383q-33 0 -55.5 22.5t-22.5 55.5z" />
246
- <glyph unicode="&#xf0e9;" horiz-adv-x="1884" d="M0 770q31 137 109.5 253t193.5 204t257 141t302 66v53q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5v-53q160 -12 303 -65.5t258 -141.5t192.5 -204t108.5 -253q6 -29 -20 -43q-10 -6 -19 -6q-20 0 -28 12q-98 102 -218 103q-86 0 -163.5 -54.5t-130.5 -152.5 q-10 -23 -35 -23t-35 23q-82 150 -213 194v-526q0 -68 -23.5 -127t-63.5 -104.5t-93.5 -71t-114.5 -25.5t-115.5 25.5t-94.5 71t-63.5 104.5t-23.5 127q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5q0 -70 40 -119t97 -49q55 0 95 49t40 119v526 q-131 -45 -213 -194q-10 -23 -35 -23t-34 23q-53 98 -130 152.5t-163 54.5q-121 0 -217 -103q-12 -12 -31 -12q-10 0 -19 6q-25 14 -20 43z" />
247
- <glyph unicode="&#xf0ea;" horiz-adv-x="1597" d="M0 385v1075q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-231h33h61q25 0 55.5 -13.5t49.5 -29.5l280 -281q18 -18 30.5 -49t12.5 -55v-62v-678q0 -27 -17 -44t-44 -17h-860q-27 0 -44.5 17.5t-17.5 43.5v246h-536q-33 0 -55.5 22.5t-22.5 55.5zM276 1321 q0 -12 9.5 -21.5t21.5 -9.5h461q12 0 21.5 9.5t9.5 21.5v61q0 12 -9.5 21.5t-21.5 9.5h-461q-12 0 -21.5 -9t-9.5 -22v-61zM737 123h738v555h-367q-27 0 -44 17.5t-17 43.5v367h-310v-983zM1169 801h306q0 2 -3.5 8t-5.5 10l-280 279q0 4 -6 4q-2 0 -2 1t-2 1t-3.5 1t-3.5 1 v-305z" />
248
- <glyph unicode="&#xf105;" horiz-adv-x="2048" />
249
- <glyph unicode="&#xf200;" horiz-adv-x="1536" d="M0 57v379q0 39 20.5 87t54.5 90t74.5 73t81.5 35q-35 -59 -34 -129q0 -59 16 -124t59 -106q-18 -37 -18 -75q0 -72 50 -122t122 -50q37 0 68.5 13t55 36.5t37 55.5t13.5 67t-13.5 66.5t-37 55t-55 38t-68.5 14.5q-18 0 -36.5 -5t-35.5 -14q-12 12 -20 31t-13.5 40.5 t-7.5 41.5t-2 37q0 47 28 86t62 67l142 21q-92 57 -142.5 150.5t-50.5 201.5q0 86 33 162t90 133t133 90t162 33t162 -33t133 -90t90 -133t33 -162q0 -109 -50.5 -202t-142.5 -150l158 -23q18 -16 34.5 -36.5t16.5 -47.5q0 -45 -18 -77q-59 33 -121 32q-45 0 -87 -17 t-77 -46q-6 2 -11 3t-11 1q-47 0 -82 -34t-35 -81t34.5 -80.5t82.5 -33.5q47 0 80.5 33.5t33.5 80.5q0 8 -2 15.5t-4 13.5q16 12 35.5 20.5t42.5 8.5q55 0 95 -39t40 -94q0 -23 -8 -41.5t-19 -34.5q-25 10 -45 10q-47 0 -81.5 -34t-34.5 -81t34.5 -80.5t81.5 -33.5t81 33.5 t34 80.5l-2 4q74 74 74 177q0 74 -41 137q45 70 45 157q0 31 -12 62q41 -4 83 -34t74.5 -72t53 -90t20.5 -89v-379q-10 -6 -22.5 -15t-25.5 -18.5t-26.5 -16.5t-21.5 -7h-1344q-35 0 -52 20.5t-44 36.5zM369 287q0 25 17 41t40 16q25 0 41 -16t16 -41q0 -23 -16 -40.5 t-41 -17.5q-23 0 -40 17.5t-17 40.5z" />
250
- <glyph unicode="&#xf201;" horiz-adv-x="1597" />
251
- <glyph unicode="&#xf202;" horiz-adv-x="1597" />
252
- <glyph unicode="&#xf203;" horiz-adv-x="1597" />
253
- <glyph unicode="&#xf204;" horiz-adv-x="1597" />
254
- </font>
255
- </defs></svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/font/fontawesome-webfont.svgz DELETED
Binary file
includes/admin/shared-ui/font/fontawesome-webfont.ttf DELETED
Binary file
includes/admin/shared-ui/font/fontawesome-webfont.woff DELETED
Binary file
includes/admin/shared-ui/img/spin-grey.gif DELETED
Binary file
includes/admin/shared-ui/img/spin.gif DELETED
Binary file
includes/admin/shared-ui/notice.css DELETED
@@ -1,189 +0,0 @@
1
- /* ****************************************************************************
2
- * NOTIFICATION STYLES
3
- *
4
- * Those styles are identical with the free-dashboard-notification submodule.
5
- * Any changes made in this section should also be made to the other module!
6
- */
7
-
8
- .wrap .frash-notice.notice {
9
- padding: 0;
10
- margin: 5px 0 10px;
11
- border: 1px solid #E5E5E5;
12
- background: #FFF;
13
- overflow: hidden;
14
- -webkit-border-radius: 6px;
15
- border-radius: 6px;
16
- -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
17
- box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
18
- position: relative;
19
- z-index: 1;
20
- min-height: 80px;
21
- display: table; /* The magic ingredient! */
22
- font: 13px "Open Sans", sans-serif;
23
- }
24
- .wrap .frash-notice.notice.loading:before {
25
- content: attr(data-message);
26
- position: absolute;
27
- left: 0;
28
- right: 0;
29
- top: 0;
30
- bottom: 0;
31
- background-color: rgba(255, 255, 255, 0.7);
32
- z-index: 5;
33
- text-align: center;
34
- line-height: 80px;
35
- font-size: 22px;
36
- font-weight: bold;
37
- }
38
- .frash-notice > div {
39
- display: table-cell; /* The magic ingredient! */
40
- vertical-align: middle;
41
- cursor: default;
42
- }
43
- .frash-notice.notice.loading > div {
44
- -webkit-filter: blur(2px);
45
- -moz-filter: blur(2px);
46
- -o-filter: blur(2px);
47
- -ms-filter: blur(2px);
48
- filter: blur(2px);
49
- }
50
- .frash-notice-logo {
51
- background-color: #0B2F3F;
52
- background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgODAgODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQoJPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBmaWxsPSJub25lIj48L3JlY3Q+DQoJPGVsbGlwc2UgZmlsbD0iIzJEQThERSIgY3g9IjQwIiBjeT0iNDAuMDAxOTgyOCIgcng9IjI4IiByeT0iMjguMDAxOTgyOCI+PC9lbGxpcHNlPg0KCTxwYXRoIGQ9Ik0zNC45MDc1LDM3LjYzMDU2NDkgTDM0LjkwNzUsMzUuMTgwMzkxNCBDMzQuOTA3NSwzMi4wMzg5MTg5IDMyLjY0MTI1LDI5LjQ5MjQ4ODYgMjkuODQxMjUsMjkuNDkyNDg4NiBDMjcuMDQxMjUsMjkuNDkyNDg4NiAyNC43NzUsMzIuMDM4OTE4OSAyNC43NzUsMzUuMTgwMzkxNCBMMjQuNzc1LDM1LjE4MDM5MTQgTDI0Ljc3NSw1MC41MDI3MjYzIEwyOC4xMTc1LDQ3Ljg3NzU0MDQgTDI4LjExNzUsMzUuMTgwMzkxNCBDMjguMTMzMzk1NSwzNC4xODk3Mzg1IDI4Ljg4MjkwOTksMzMuMzY1MjE0MiAyOS44Njc1LDMzLjI1NTI1NTEgQzMxLjU3Mzc1LDMzLjAwMTQ4NzEgMzQuMzgyNSwzNC44MDQxMTQ3IDM0LjkwNzUsMzcuNjMwNTY0OSBMMzQuOTA3NSwzNy42MzA1NjQ5IFoiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4NCgk8cGF0aCBkPSJNNDMuMzg2MjUsMzMuMjU1MjU1MSBDNDUuMTM2MjUsMzMuMDEwMjM3NyA0Ny45Mjc1LDM0LjgwNDExNDcgNDguNDUyNSwzNy42MzA1NjQ5IEw0OC40NTI1LDM1LjE4MDM5MTQgQzQ4LjQ1MjUsMzIuMDM4OTE4OSA0Ni4xODYyNSwyOS40OTI0ODg2IDQzLjM4NjI1LDI5LjQ5MjQ4ODYgQzQwLjk2MjUsMjkuNDkyNDg4NiAzOC4zMiwzMS41OTI2MzczIDM4LjMyLDM1LjE5Nzg5MjYgTDM4LjMyLDQzLjc2NDc0OTIgQzM4LjMyLDQ1LjAzMzU4OTEgMzcuNTg1LDQ2LjA2NjE2MjIgMzYuNjY2MjUsNDUuOTUyNDA0MSBDMzkuMzg3NSw0Ni4yOTM2NzgzIDQxLjc3NjI1LDQyLjI0MjE0MTQgNDEuNjYyNSwzOC43NTkzOTQ4IEw0MS42NjI1LDM1LjE5Nzg5MjYgQzQxLjYwNzYxMDcsMzQuMTg3MzMxMSA0Mi4zNzY0MDI0LDMzLjMyMDkxNTYgNDMuMzg2MjUsMzMuMjU1MjU1MSBMNDMuMzg2MjUsMzMuMjU1MjU1MSBaIiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+DQoJPHBhdGggZD0iTTUxLjg2NSwzMi4xMjY0MjUxIEw1MS44NjUsNDMuNzU1OTk4NiBDNTEuODY1LDQ1LjAyNDgzODQgNTEuMTIxMjUsNDYuMDU3NDExNiA1MC4yMiw0NS45NDM2NTM1IEM1Mi45NDEyNSw0Ni4yODQ5Mjc3IDU1LjMzLDQyLjIzMzM5MDggNTUuMjE2MjUsMzguNzUwNjQ0MiBMNTUuMjE2MjUsMjkuNTAxMjM5MiBMNTEuODY1LDMyLjEyNjQyNTEgWiIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPg0KCTxwYXRoIGQ9Ik01MC4xNTg3NSw0Ni43Mzk5NTk5IEM1MS45MDg3NSw0Ni45NDk5NzQ4IDU0LjcsNDUuMTkxMTAwMiA1NS4yMjUsNDIuMzY0NjUwMSBMNTUuMjI1LDQ0LjgxNDgyMzYgQzU1LjIyNSw0Ny45NTYyOTYgNTIuOTU4NzUsNTAuNTAyNzI2MyA1MC4xNTg3NSw1MC41MDI3MjYzIEM0Ny44NjYyNSw1MC41MDI3MjYzIDQ1LjA5MjUsNDguNjM4ODQ0MyA0NS4wOTI1LDQ0LjgxNDgyMzYgTDQ1LjA5MjUsMzYuMjQ3OTY3IEM0NS4wOTI1LDM0Ljk3OTEyNzEgNDQuMzQ4NzUsMzMuOTQ2NTU0IDQzLjQzODc1LDM0LjA2MDMxMjEgQzQ2LjE2LDMzLjcxOTAzNzkgNDguNTQ4NzUsMzcuNzcwNTc0OCA0OC40MzUsNDEuMjUzMzIxNCBMNDguNDM1LDQ0LjgxNDgyMzYgQzQ4LjQ0NTM5NTksNDUuNzk4MDk0MSA0OS4xODI2NTY0LDQ2LjYyMTQ4OSA1MC4xNTg3NSw0Ni43Mzk5NTk5IEw1MC4xNTg3NSw0Ni43Mzk5NTk5IFoiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4NCgk8cGF0aCBkPSJNMzYuNjEzNzUsNDYuNzQ4NzEwNSBDMzguMzYzNzUsNDYuOTg0OTc3MiA0MS4xNTUsNDUuMTk5ODUwOCA0MS42OCw0Mi4zNzM0MDA3IEw0MS42OCw0NC44MjM1NzQyIEM0MS42OCw0Ny45NjUwNDY2IDM5LjQxMzc1LDUwLjUxMTQ3NjkgMzYuNjEzNzUsNTAuNTExNDc2OSBDMzQuMTksNTAuNTExNDc2OSAzMS41NDc1LDQ4LjQxMTMyODIgMzEuNTQ3NSw0NC44MDYwNzMgTDMxLjU0NzUsMzYuMjM5MjE2MyBDMzEuNTQ3NSwzNC45NzAzNzY1IDMwLjgwMzc1LDMzLjkzNzgwMzQgMjkuOTAyNSwzNC4wNTE1NjE0IEMzMi42MjM3NSwzMy43MTAyODczIDM1LjAxMjUsMzcuNzYxODI0MiAzNC44OTg3NSw0MS4yNDQ1NzA4IEwzNC44OTg3NSw0NC44MDYwNzMgQzM0Ljg0MzcxMTgsNDUuODEzNDQ3MyAzNS42MDczOTA5LDQ2LjY3ODQ5MiAzNi42MTM3NSw0Ni43NDg3MTA1IEwzNi42MTM3NSw0Ni43NDg3MTA1IFoiIGZpbGw9IiNGRkZGRkYiID48L3BhdGg+DQo8L3N2Zz4=);
53
- background-repeat: no-repeat;
54
- background-position: 50% 50%;
55
- }
56
- .frash-notice-logo span {
57
- display: block;
58
- width: 80px;
59
- }
60
- .frash-notice-message {
61
- width: 100%;
62
- padding: 10px 20px;
63
- color: #444;
64
- }
65
- .frash-notice-message strong {
66
- color: #000;
67
- }
68
- .frash-notice-cta {
69
- border-left: 1px solid #E5E5E5;
70
- background: #F8F8F8;
71
- padding: 0 30px;
72
- position: relative;
73
- white-space: nowrap;
74
- }
75
- .wp-core-ui .frash-notice-cta button,
76
- .wp-core-ui .frash-notice-cta .button-primary:active {
77
- vertical-align: middle;
78
- }
79
- .wp-core-ui .frash-notice-cta input[type="email"] {
80
- vertical-align: middle;
81
- line-height: 20px;
82
- margin: 0;
83
- min-width: 50px;
84
- max-width: 320px;
85
- text-align: center;
86
- padding-left: 0;
87
- padding-right: 0;
88
- }
89
- .frash-notice-dismiss {
90
- background: transparent;
91
- border: 0;
92
- cursor: pointer;
93
- color: #BBB;
94
- }
95
- .frash-notice-dismiss:hover {
96
- color: #666;
97
- }
98
-
99
- .frash-notice .frash-notice-logo {
100
- position: relative;
101
- }
102
- .frash-notice .frash-notice-logo:before,
103
- .frash-notice .frash-notice-logo:after {
104
- content: '';
105
- position: absolute;
106
- z-index: 0;
107
- background: inherit;
108
- left: 0;
109
- top: 0;
110
- width: 80px;
111
- bottom: 0;
112
- }
113
- .frash-notice .frash-notice-logo:before {
114
- background-image: none;
115
- z-index: 1;
116
- }
117
- .frash-notice .frash-notice-logo:after {
118
- animation: spin 30s linear infinite;
119
- background-color: rgba(0, 0, 0, 0);
120
- z-index: 2;
121
- }
122
-
123
- @media only all and (max-width: 1200px) {
124
- .frash-notice-dismiss {
125
- display: block;
126
- margin: 0 auto;
127
- line-height: 18px;
128
- padding-top: 8px;
129
- padding-bottom: 2px;
130
- }
131
- }
132
-
133
- @media only all and (max-width: 1000px) {
134
- .wrap .frash-notice.notice {
135
- display: block;
136
- font-size: 13px;
137
- }
138
- .frash-notice > .frash-notice-logo {
139
- float: left;
140
- display: inline-block;
141
- height: 80px;
142
- margin: 10px;
143
- border-radius: 4px;
144
- }
145
- .frash-notice > .frash-notice-message {
146
- width: auto;
147
- display: block;
148
- padding: 10px;
149
- min-height: 80px;
150
- }
151
- .frash-notice > .frash-notice-cta {
152
- display: block;
153
- border-top: 1px solid #E5E5E5;
154
- border-left: 0;
155
- text-align: center;
156
- white-space: normal;
157
- line-height: 30px;
158
- padding: 10px 20px;
159
- }
160
- .wp-core-ui .frash-notice > .frash-notice-cta > input[type="email"],
161
- .frash-notice > .frash-notice-cta > button {
162
- font-size: 14px;
163
- }
164
- .frash-notice > .frash-notice-cta > .frash-notice-dismiss {
165
- display: inline-block;
166
- float: none;
167
- line-height: 26px;
168
- padding-top: 0;
169
- padding-bottom: 0;
170
- font-size: 13px;
171
- }
172
- }
173
-
174
- @media only all and (max-width: 500px) {
175
- .wp-core-ui .frash-notice > .frash-notice-cta > input[type="email"],
176
- .frash-notice > .frash-notice-cta > button {
177
- display: block;
178
- width: 100% !important;
179
- max-width: none;
180
- margin-bottom: 4px;
181
- font-size: 16px;
182
- height: 34px;
183
- }
184
- .frash-notice > .frash-notice-cta > .frash-notice-dismiss {
185
- margin-top: 5px;
186
- font-size: 14px;
187
- height: 23px;
188
- }
189
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/notice.js DELETED
@@ -1,52 +0,0 @@
1
- jQuery(function() {
2
- var el_notice, msg_id = el_notice, btn_dismiss;
3
-
4
- // Display the notice after the page was loaded.
5
- function initialize() {
6
- if (! jQuery(".frash-notice:visible").length) {
7
- el_notice = jQuery(".frash-notice");
8
- msg_id = el_notice.find("input[name=msg_id]").val();
9
- btn_dismiss = el_notice.find(".frash-notice-dismiss");
10
-
11
- // Dismiss the notice without any action.
12
- btn_dismiss.click(function(ev) {
13
- ev.preventDefault();
14
- notify_wordpress("wdev_notice_dismiss", btn_dismiss.data("msg"));
15
- });
16
-
17
- // Display the notification.
18
- el_notice.fadeIn(500);
19
- }
20
- }
21
-
22
- // Hide the notice after a CTA button was clicked
23
- function remove_notice() {
24
- el_notice.fadeTo(100 , 0, function() {
25
- el_notice.slideUp(100, function() {
26
- el_notice.remove();
27
- });
28
- });
29
- }
30
-
31
- // Notify WordPress about the users choice and close the message.
32
- function notify_wordpress(action, message) {
33
- var ajax_data = {};
34
-
35
- if ('0' !== msg_id) {
36
- el_notice.attr("data-message", message);
37
- el_notice.addClass("loading");
38
-
39
- ajax_data.msg_id = msg_id;
40
- ajax_data.action = action;
41
- jQuery.post(
42
- window.ajaxurl,
43
- ajax_data,
44
- remove_notice
45
- );
46
- } else {
47
- remove_notice();
48
- }
49
- }
50
-
51
- window.setTimeout(initialize, 550);
52
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/plugin-ui.php DELETED
@@ -1,267 +0,0 @@
1
- <?php
2
- /**
3
- * Provides PHP support for simple use of the WPMUDEV plugin UI.
4
- *
5
- * @package WPMUDEV_UI
6
- */
7
-
8
- if ( ! class_exists( 'WDEV_Plugin_Ui' ) ) {
9
-
10
- /**
11
- * UI class that encapsulates all module functions.
12
- */
13
- class WDEV_Plugin_Ui {
14
-
15
- /**
16
- * Current module version.
17
- */
18
- const VERSION = '1.0';
19
-
20
- /**
21
- * Internal translation container.
22
- *
23
- * @var array
24
- */
25
- static protected $i10n = array();
26
-
27
- /**
28
- * Internal storage that holds additional classes for body tag.
29
- *
30
- * @var array
31
- */
32
- static protected $body_class = '';
33
-
34
- /**
35
- * URL to this module (directory). Used to enqueue the css/js files.
36
- *
37
- * @var string
38
- */
39
- static protected $module_url = '';
40
-
41
- /**
42
- * Initializes all UI components.
43
- *
44
- * @since 1.0.0
45
- * @internal
46
- */
47
- static public function reset() {
48
- self::$i10n = array(
49
- 'empty_search' => __( 'Nothing found', 'wpmudev' ),
50
- 'default_msg_ok' => __( 'Okay, we saved your changes!', 'wpmudev' ),
51
- 'default_msg_err' => __( 'Oops, we could not do this...', 'wpmudev' ),
52
- );
53
- }
54
-
55
- /**
56
- * Enqueues the CSS and JS files needed for plugin UI
57
- *
58
- * @since 1.0.0
59
- * @api Call this function before/in `admin_head`.
60
- * @param string $module_url URL to this module (directory).
61
- * @param string $body_class List of additional classes for the body tag.
62
- */
63
- static public function load( $module_url, $body_class = '' ) {
64
- self::$module_url = trailingslashit( $module_url );
65
- self::$body_class = trim( $body_class );
66
- add_filter(
67
- 'admin_body_class',
68
- array( __CLASS__, 'admin_body_class' )
69
- );
70
-
71
- if ( ! did_action( 'admin_enqueue_scripts' ) ) {
72
- add_action(
73
- 'admin_enqueue_scripts',
74
- array( __CLASS__, 'enqueue' )
75
- );
76
- } else {
77
- self::enqueue();
78
- }
79
- }
80
-
81
- /**
82
- * Enqueues the CSS and JS files.
83
- *
84
- * @since 1.0.0
85
- * @internal Do not call this method manually. It's called by `load()`!
86
- */
87
- static public function enqueue() {
88
- wp_enqueue_style(
89
- 'wdev-plugin-google_fonts',
90
- 'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Roboto:400,500,300,300italic',
91
- false,
92
- self::VERSION
93
- );
94
-
95
- wp_enqueue_style(
96
- 'wdev-plugin-ui',
97
- self::$module_url . 'wdev-ui.css',
98
- array( 'wdev-plugin-google_fonts' ),
99
- self::VERSION
100
- );
101
-
102
- wp_enqueue_script(
103
- 'wdev-plugin-ui',
104
- self::$module_url . 'wdev-ui.js',
105
- array( 'jquery' ),
106
- self::VERSION
107
- );
108
- }
109
-
110
- /**
111
- * Adds the page-specific class to the admin page body tag.
112
- *
113
- * @since 1.0.0
114
- * @internal Action hook
115
- * @param string $classes List of CSS classes of the body tag.
116
- * @return string Updated list of CSS classes.
117
- */
118
- static public function admin_body_class( $classes ) {
119
- $classes .= ' wpmud';
120
- if ( self::$body_class ) {
121
- $classes .= ' ' . self::$body_class;
122
- }
123
- $classes .= ' ';
124
-
125
- return $classes;
126
- }
127
-
128
- /**
129
- * Sets a translation from javascript.
130
- *
131
- * @since 1.0.0
132
- * @api Use this before calling `output_header()`.
133
- * @param string $key The translation key (used in javascript).
134
- * @param string $value Human readable text.
135
- */
136
- static public function translate( $key, $value ) {
137
- self::$i10n[ $key ] = (string) $value;
138
- }
139
-
140
- /**
141
- * Outputs code in the page header.
142
- *
143
- * This function must be called by the plugin!
144
- * It's not important if it's in the header or in the footer of the page,
145
- * but in top/header is recommended.
146
- *
147
- * @since 1.0.0
148
- * @api Call this function somewhere after output started.
149
- * @param array $commands Optinal list of additional JS commands that
150
- * are executed when page loaded.
151
- */
152
- static public function output( $commands = array() ) {
153
- $data = array();
154
- $data[] = 'window.WDP = window.WDP || {}';
155
- $data[] = 'WDP.data = WDP.data || {}';
156
- $data[] = 'WDP.data.site_url = ' . json_encode( get_site_url() );
157
- $data[] = 'WDP.lang = ' . json_encode( self::$i10n );
158
-
159
- // Add custom JS commands to the init-code.
160
- if ( is_array( $commands ) ) {
161
- $data = array_merge( $data, $commands );
162
- }
163
-
164
- /**
165
- * Display a custom success message on the WPMU Dashboard pages.
166
- *
167
- * @var string|array The message to display.
168
- * Array options:
169
- * 'type' => [ok|err] (default: 'ok')
170
- * 'delay' => 3000 (default: 3000ms)
171
- * 'message' => '...' (required!)
172
- */
173
- $notice = apply_filters( 'wpmudev-admin-notice', false );
174
- if ( $notice ) {
175
- $command = 'WDP';
176
- if ( is_array( $notice ) && ! empty( $notice['type'] ) ) {
177
- $command .= sprintf( '.showMessage("type", "%s")', esc_attr( $notice['type'] ) );
178
- }
179
- if ( is_array( $notice ) && ! empty( $notice['delay'] ) ) {
180
- $command .= sprintf( '.showMessage("delay", %s)', intval( $notice['delay'] ) );
181
- }
182
- if ( is_array( $notice ) && ! empty( $notice['message'] ) ) {
183
- $command .= sprintf( '.showMessage("message", "%s")', esc_html( $notice['message'] ) );
184
- } elseif ( is_string( $notice ) ) {
185
- $command .= sprintf( '.showMessage("message", "%s")', esc_html( $notice ) );
186
- }
187
- $command .= '.showMessage("show")';
188
- $data[] = $command;
189
- }
190
-
191
- foreach ( $data as $item ) {
192
- printf(
193
- "<script>;jQuery(function(){%s;});</script>\n",
194
- // @codingStandardsIgnoreStart: This is javascript code, no escaping!
195
- $item
196
- // @codingStandardsIgnoreEnd
197
- );
198
- }
199
- }
200
-
201
- /**
202
- * Output the HTML code to display the notification.
203
- *
204
- * @since 1.0.0
205
- * @param string $module_url URL to this module (directory).
206
- * @param array $msg The message details.
207
- * id .. Required, can be any valid class-name.
208
- * content .. Required, can contain HTML.
209
- * dismissed .. Optional. If true then no message is output.
210
- * can_dismiss .. Optional. If true a Dismiss button is added.
211
- * cta .. Optional. Can be HTML code of a button/link.
212
- */
213
- static public function render_dev_notification( $module_url, $msg ) {
214
- if ( ! is_array( $msg ) ) { return; }
215
- if ( ! isset( $msg['id'] ) ) { return; }
216
- if ( empty( $msg['content'] ) ) { return; }
217
- if ( $msg['dismissed'] ) { return; }
218
-
219
- $css_url = $module_url . 'notice.css';
220
- $js_url = $module_url . 'notice.js';
221
-
222
- if ( empty( $msg['id'] ) ) {
223
- $msg_dismiss = '';
224
- } else {
225
- $msg_dismiss = __( 'Saving', 'wpmudev' );
226
- }
227
-
228
- $show_actions = $msg['can_dismiss'] || $msg['cta'];
229
-
230
- $allowed = array(
231
- 'a' => array( 'href' => array(), 'title' => array(), 'target' => array(), 'class' => array() ),
232
- 'br' => array(),
233
- 'hr' => array(),
234
- 'em' => array(),
235
- 'i' => array(),
236
- 'strong' => array(),
237
- 'b' => array(),
238
- );
239
-
240
- ?>
241
- <link rel="stylesheet" type="text/css" href="<?php echo esc_url( $css_url ); ?>" />
242
- <div class="notice frash-notice" style="display:none">
243
- <input type="hidden" name="msg_id" value="<?php echo esc_attr( $msg['id'] ); ?>" />
244
-
245
- <div class="frash-notice-logo"><span></span></div>
246
- <div class="frash-notice-message">
247
- <?php echo wp_kses( $msg['content'], $allowed ); ?>
248
- </div>
249
- <?php if ( $show_actions ) : ?>
250
- <div class="frash-notice-cta">
251
- <?php echo wp_kses( $msg['cta'], $allowed ); ?>
252
- <?php if ( $msg['can_dismiss'] ) : ?>
253
- <button class="frash-notice-dismiss" data-msg="<?php echo esc_attr( $msg_dismiss ); ?>">
254
- <?php esc_html_e( 'Dismiss', 'wpmudev' ); ?>
255
- </button>
256
- <?php endif; ?>
257
- </div>
258
- <?php endif; ?>
259
- </div>
260
- <script src="<?php echo esc_url( $js_url ); ?>"></script>
261
- <?php
262
- }
263
- };
264
-
265
- // Initialize the UI.
266
- WDEV_Plugin_Ui::reset();
267
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/wdev-ui.css DELETED
@@ -1,2499 +0,0 @@
1
- /**
2
- * CSS Styles used by WPMUDEV plugins.
3
- *
4
- * To apply these styles add these classes to the mentioned tags:
5
- * <html> .. add class "wpmud-html"
6
- * <body> .. add class "wpmud"
7
- *
8
- * -----------------------------------------------------------------------------
9
- *
10
- * 1. GLOBAL STYLES, TYPOGRAPHY
11
- * 2. ELEMENT STATES
12
- * 3. ELEMENT: BOX
13
- * 4. ELEMENT: LIST
14
- * 5. ELEMENT: LIST-TABLE
15
- * 6. ELEMENT: GRID
16
- * 7. ELEMENT: HORIZONTAL TABS
17
- * 8. ELEMENT: VERTICAL TABS
18
- * 9. ELEMENT: TOOLTIPS
19
- * 10. ELEMENT: OVERLAYS
20
- * 11. ELEMENT: DASHBOARD NOTIFICATONS (enhancements)
21
- * 12. ELEMENT: BUTTONS
22
- * 13. ELEMENT: FORMS
23
- * 14. ELEMENT: INPUT (general styles)
24
- * 15. ELEMENT: TOGGLE (styled checkbox)
25
- * 16. ELEMENT: RADIO GROUP (styled radio)
26
- * 17. ELEMENT: SELECT
27
- * 18. ELEMENT: LISTINGS
28
- * 19. ELEMENT: USER NOTIFICATIONS
29
- * 20. ELEMENT: SEARCH BOX
30
- * 21. ELEMENT: COUNT-BADGE
31
- * 22. ELEMENT: PAGE HEADER
32
- * 23. FONTAWESOME
33
- * 24. WPMUDEV ICONFONT
34
- * 25. CUSTOM ANIMATIONS
35
- *
36
- * -----------------------------------------------------------------------------
37
- */
38
-
39
- /* ****************************************************************************
40
- * 1. GLOBAL STYLES, TYPOGRAPHY
41
- */
42
- .wpmud-html {
43
- background-color: #F4F4F4;
44
- }
45
- .wpmud #wpbody {
46
- background: #F4F4F4;
47
- -webkit-font-smoothing: antialiased !important;
48
- }
49
- .wpmud #wpbody * {
50
- box-sizing: border-box;
51
- -moz-box-sizing: border-box;
52
- }
53
- .wpmud #container {
54
- margin-top: 30px;
55
- font-family: 'Roboto', sans-serif;
56
- font-weight: 400;
57
- font-size: 15px;
58
- line-height: 1.5em;
59
- color: #777771;
60
- letter-spacing: -0.015em;
61
- }
62
- .wpmud h1,
63
- .wpmud h2,
64
- .wpmud h3,
65
- .wpmud h4,
66
- .wpmud h5,
67
- .wpmud h6 {
68
- display: block;
69
- margin: 0.5em auto;
70
- padding: 0;
71
- line-height: 1em;
72
- text-align: center;
73
- color: #777771;
74
- }
75
- .wpmud h1,
76
- .wpmud h2,
77
- .wpmud h3 {
78
- font-family: 'Roboto Condensed', 'Roboto', sans-serif;
79
- font-weight: 400;
80
- max-width: 900px;
81
- text-transform: uppercase;
82
- }
83
- .wpmud h4,
84
- .wpmud h5,
85
- .wpmud h6 {
86
- font-family: 'Roboto', sans-serif;
87
- font-weight: 500;
88
- }
89
- .wpmud h1 {
90
- font-size: 60px;
91
- font-weight: 700;
92
- }
93
- .wpmud h2 {
94
- font-size: 50px;
95
- text-transform: none;
96
- }
97
- .wpmud h3 {
98
- font-size: 50px;
99
- }
100
- .wpmud h4 {
101
- font-size: 36px;
102
- text-transform: uppercase;
103
- }
104
- .wpmud h5 {
105
- font-size: 36px;
106
- }
107
- .wpmud h6 {
108
- font-size: 28px;
109
- font-weight: 400;
110
- }
111
- .wpmud p {
112
- display: block;
113
- margin: 0.5em 0;
114
- padding: 0;
115
- font-family: 'Roboto', sans-serif;
116
- font-weight: 400;
117
- font-size: 15px;
118
- line-height: 21px;
119
- color: #777771;
120
- }
121
- .wpmud p small {
122
- font-size: 12.5px;
123
- line-height: 17px;
124
- display: inline-block;
125
- color: #555550;
126
- }
127
- .wpmud p big {
128
- font-size: 18px;
129
- line-height: 24px;
130
- display: inline-block;
131
- font-weight: 400;
132
- color: #888882;
133
- }
134
- .wpmud p:first-child {
135
- margin-top: 0;
136
- }
137
- .wpmud p:last-child {
138
- margin-bottom: 0;
139
- }
140
- .wpmud .notice p {
141
- margin:5px 0;
142
- }
143
- .wpmud dfn {
144
- font-style: normal;
145
- font-weight: normal;
146
- border-bottom: 1px dotted #999;
147
- }
148
- .wpmud code,
149
- .wpmud pre {
150
- font: 400 13px/15px Consolas, Monaco, monospace;
151
- border-left: 2px solid rgba(0,0,0,0.2);
152
- padding: 5px 10px 5px 10px;
153
- background: rgba(0,0,0,0.05);
154
- border-radius: 3px;
155
- color: #555;
156
- margin: 1em 0;
157
- overflow: auto;
158
- vertical-align: middle;
159
- }
160
- .wpmud code {
161
- display: inline-block;
162
- margin: 0;
163
- }
164
- #wpfooter {
165
- display: none;
166
- }
167
- .wpmud a {
168
- text-decoration: none;
169
- color: #19B4CF;
170
- }
171
- .wpmud a:active,
172
- .wpmud a:focus,
173
- .wpmud a:hover {
174
- color: #477B92;
175
- }
176
- .wpmud a.disabled,
177
- .wpmud a.disabled:active,
178
- .wpmud a.disabled:hover,
179
- .wpmud a.disabled:focus {
180
- color: 788084;
181
- cursor: default;
182
- }
183
-
184
- /* ****************************************************************************
185
- * 2. ELEMENT STATES
186
- */
187
- .wpmud .block {
188
- display: block;
189
- width: 100%;
190
- float: none;
191
- }
192
- .wpmud .button.block,
193
- .wpmud button.block,
194
- .wpmud input.block {
195
- text-align: center;
196
- }
197
- .wpmud .space-t {
198
- margin-top: 20px;
199
- }
200
- .wpmud .space-b {
201
- margin-bottom: 20px;
202
- }
203
- .wpmud .tl {
204
- text-align: left;
205
- }
206
- .wpmud .tc {
207
- text-align: center;
208
- }
209
- .wpmud .tr {
210
- text-align: right;
211
- }
212
- .wpmud .group {
213
- clear: both;
214
- margin: 0 0 30px;
215
- }
216
- .wpmud .group:after {
217
- content: '';
218
- display: table;
219
- clear: both;
220
- }
221
- .wpmud .input-group {
222
- display: inline-block;
223
- white-space: nowrap;
224
- }
225
- .wpmud .float-r {
226
- float: right;
227
- }
228
- .wpmud .float-l {
229
- float: left;
230
- }
231
- .wpmud .pointer {
232
- cursor: pointer;
233
- }
234
- .wpmud .dev-label {
235
- background: #ECECEC;
236
- border: 1px solid #E5E5E5;
237
- color: #BABABA;
238
- line-height: 30px;
239
- padding: 0 10px;
240
- border-radius: 3px;
241
- display: inline-block;
242
- vertical-align: middle;
243
- margin: 0 5px;
244
- cursor: default;
245
- }
246
- .wpmud .can-close .box-title .close,
247
- .wpmud .can-close .close-icon {
248
- cursor: pointer;
249
- position: relative;
250
- display: inline-block;
251
- width: 22px;
252
- height: 22px;
253
- line-height: 22px;
254
- float: right;
255
- }
256
- .wpmud .can-close .box-title .close {
257
- float: right;
258
- margin: 20px -10px 0 0;
259
- }
260
- .wpmud .can-close .box-title .close:after,
261
- .wpmud .can-close .close-icon:after {
262
- content: "\79";
263
- font-family: 'WPMU-DEV-App-Icons';
264
- speak: none;
265
- font-style: normal;
266
- font-weight: normal;
267
- font-variant: normal;
268
- text-transform: none;
269
- line-height: 22px;
270
- text-align: center;
271
- font-size: 14px;
272
- -webkit-font-smoothing: antialiased;
273
- -moz-osx-font-smoothing: grayscale;
274
- position: absolute;
275
- left: 0;
276
- right: 0;
277
- top: 0;
278
- bottom: 0;
279
- background: #FFF;
280
- color: #777771;
281
- transition: color 0.3s;
282
- }
283
- .wpmud .can-close .box-title .close:hover:after,
284
- .wpmud .can-close .close-icon:hover:after {
285
- color: #333;
286
- }
287
- /* http://loading.io/loader/?use=eyJzaXplIjo2MCwic3BlZWQiOjEsImNiayI6IiM5OTk5OTkiLCJjMSI6IiMwMDAiLCJjMiI6IjciLCJjMyI6IjEwIiwiYzQiOiJ5LWF4aXMiLCJ0eXBlIjoic3BpbiJ9 */
288
- .wpmud .loading.disabled:before,
289
- .wpmud .loading:before {
290
- content: '';
291
- background: transparent url(img/spin.gif) center center no-repeat;
292
- background-size: contain;
293
- display: inline-block;
294
- width: 18px;
295
- height: 18px;
296
- vertical-align: top;
297
- position: static;
298
- border: none;
299
- margin: 0;
300
- z-index: 1;
301
- opacity: 1;
302
- }
303
- .wpmud .has-hover .show-on-hover {
304
- opacity: 0;
305
- transition-property: opacity;
306
- transition-duration: 0.3s;
307
- }
308
- .wpmud .has-hover:hover .show-on-hover,
309
- .wpmud .has-hover .show-on-hover.loading {
310
- opacity: 1;
311
- }
312
-
313
- /* ****************************************************************************
314
- * 3. ELEMENT: BOX
315
- */
316
- .wpmud .dev-box {
317
- border-radius: 5px;
318
- background-color: #FFF;
319
- box-shadow: 0 2px 0 #EAEAEA;
320
- padding: 30px;
321
- margin: 0 0 30px;
322
- }
323
- .wpmud .dev-box .box-title {
324
- height: 60px;
325
- padding: 0 30px;
326
- border-bottom: 1px solid #EAEAEA;
327
- margin: -30px -30px 30px -30px;
328
- }
329
- .wpmud .dev-box .box-title .buttons {
330
- float: right;
331
- margin: 15px -5px 0 0;
332
- }
333
- .wpmud .dev-box .box-title .button {
334
- font-weight: 700;
335
- }
336
- .wpmud .dev-box .box-title h3 {
337
- font-family: 'Roboto Condensed', 'Roboto', sans-serif;
338
- font-size: 18px;
339
- font-weight: 700;
340
- color: #777771;
341
- line-height: 60px;
342
- margin: 0;
343
- text-align: left;
344
- white-space: nowrap;
345
- overflow: hidden;
346
- text-overflow: ellipsis;
347
- }
348
- .wpmud .dev-box .box-title .buttons .dev-icon {
349
- font-size: 18px;
350
- }
351
- .wpmud .box-footer {
352
- text-align: center;
353
- margin-top: 32px;
354
- font-size: 16px;
355
- }
356
-
357
- /* ****************************************************************************
358
- * 4. ELEMENT: LIST
359
- */
360
- .wpmud .dev-list {
361
- list-style: none;
362
- margin: -20px 0 20px;
363
- padding: 0;
364
- }
365
- .wpmud .dev-list.inline {
366
- margin-top: 20px;
367
- margin-bottom: 0;
368
- }
369
- .wpmud .dev-list.standalone {
370
- margin-bottom: -20px;
371
- }
372
- .wpmud .dev-list > li {
373
- position: relative;
374
- display: table;
375
- width: 100%;
376
- padding: 6px 0;
377
- margin: 0;
378
- border-collapse: collapse;
379
- border-spacing: 0;
380
- }
381
- .wpmud .dev-list > li > div {
382
- display: table-row; /* give each list item the full width */
383
- }
384
- .wpmud .dev-list > li.list-header {
385
- text-transform: uppercase;
386
- font-weight: bold;
387
- font-family: 'Roboto Condensed';
388
- padding-top: 0;
389
- }
390
- .wpmud .dev-list > li .list-label {
391
- padding: 10px 10px 10px 0;
392
- }
393
- .wpmud .dev-list > li .list-label.list-header {
394
- font-family: 'Roboto Condensed';
395
- color: #777771;
396
- width: 200px;
397
- }
398
- .wpmud .dev-list > li .list-label,
399
- .wpmud .dev-list > li .list-detail {
400
- display: table-cell;
401
- vertical-align: middle;
402
- cursor: default;
403
- border-bottom: 1px solid #EEEEEE;
404
- }
405
- .wpmud .dev-list > li:last-child .list-label,
406
- .wpmud .dev-list > li:last-child .list-detail {
407
- border-bottom: 1px solid transparent;
408
- }
409
- .wpmud .dev-list > li .list-detail {
410
- text-align: right;
411
- padding: 10px 0;
412
- }
413
- .wpmud .dev-list.top > li .list-label,
414
- .wpmud .dev-list.top > li .list-detail {
415
- vertical-align: top;
416
- }
417
- .wpmud .dev-list.left > li .list-label,
418
- .wpmud .dev-list.left > li .list-detail {
419
- text-align: left;
420
- }
421
- .wpmud .dev-list.top > li strong {
422
- font-family: 'Roboto Condensed';
423
- }
424
- .wpmud .dev-list.nowrap > li .list-label,
425
- .wpmud .dev-list.nowrap > li .list-detail {
426
- overflow: hidden;
427
- text-overflow: ellipsis;
428
- white-space: nowrap;
429
- }
430
- .wpmud .dev-list.nowrap > li .list-label {
431
- position: absolute;
432
- top: 0;
433
- left: 0;
434
- right: 50px;
435
- border-bottom: 0;
436
- }
437
- .wpmud .dev-list.hover-effect > li.list-header:hover {
438
- background: transparent;
439
- }
440
- .wpmud .dev-list.hover-effect > li.list-header:hover:before,
441
- .wpmud .dev-list.hover-effect > li.list-header:hover:after {
442
- display: none;
443
- }
444
- .wpmud .dev-list.hover-effect > li:hover {
445
- background: #FBFBFB;
446
- }
447
- .wpmud .dev-list.hover-effect > li:hover .list-label,
448
- .wpmud .dev-list.hover-effect > li:hover .list-detail {
449
- border-bottom: 1px solid #EEE;
450
- }
451
- .wpmud .dev-list.hover-effect > li:hover:before,
452
- .wpmud .dev-list.hover-effect > li:hover:after {
453
- content: '';
454
- position: absolute;
455
- left: -30px;
456
- width: 30px;
457
- bottom: 0;
458
- top: -1px;
459
- background: #FBFBFB;
460
- border-top: 1px solid #EEE;
461
- border-bottom: 1px solid #EEE;
462
- }
463
- .wpmud .dev-list.hover-effect > li:hover:after {
464
- right: -30px;
465
- left: auto;
466
- }
467
-
468
- /* ****************************************************************************
469
- * 5. ELEMENT: LIST-TABLE
470
- */
471
- .wpmud .list-table {
472
- border: 0;
473
- width: 100%;
474
- border-spacing: 0;
475
- border-collapse: collapse;
476
- }
477
- .wpmud .list-table > thead > tr > th {
478
- font-weight: bold;
479
- text-transform: uppercase;
480
- text-align: left;
481
- padding: 8px 10px;
482
- cursor: default;
483
- }
484
- .wpmud .list-table > thead > tr > th:first-child {
485
- padding-left: 0;
486
- }
487
- .wpmud .list-table > thead > tr > th:last-child {
488
- padding-right: 0;
489
- }
490
- .wpmud .list-table > tbody > tr > td {
491
- padding: 8px 10px;
492
- border-top: 1px solid #EEE;
493
- cursor: default;
494
- position: relative;
495
- z-index: 1;
496
- }
497
- .wpmud .list-table > tbody > tr:last-child > td {
498
- border-bottom: 1px solid transparent;
499
- }
500
- .wpmud .list-table > tbody > tr > td:first-child {
501
- padding-left: 0;
502
- }
503
- .wpmud .list-table > tbody > tr > td:last-child {
504
- padding-right: 0;
505
- }
506
- .wpmud .list-table.hover-effect > tbody > tr:hover > td:first-child:after,
507
- .wpmud .list-table.hover-effect > tbody > tr:hover > td:last-child:after {
508
- content: '';
509
- position: absolute;
510
- left: -30px;
511
- top: -1px;
512
- bottom: -1px;
513
- width: 30px;
514
- border-top: 1px solid #EEE;
515
- border-bottom: 1px solid #EEE;
516
- background: #FBFBFB;
517
- }
518
- .wpmud .list-table.hover-effect > tbody > tr:hover > td:last-child:after {
519
- right: -30px;
520
- left: auto;
521
- }
522
- .wpmud .list-table.hover-effect > tbody > tr:hover {
523
- background: #FBFBFB;
524
- }
525
- .wpmud .list-table.hover-effect > tbody > tr:hover > td {
526
- border-top: 1px solid #EEE;
527
- border-bottom: 1px solid #EEE;
528
- z-index: 2;
529
- }
530
-
531
- /* ****************************************************************************
532
- * 6. ELEMENT: GRID
533
- */
534
- .wpmud .row,
535
- .wpmud .row-sep {
536
- clear: both;
537
- margin: 0 0 0 0;
538
- position: relative;
539
- display: table;
540
- width: 100%;
541
- table-layout: fixed;
542
- }
543
- .wpmud .row:after,
544
- .wpmud .row-sep:after {
545
- content: '';
546
- display: table;
547
- clear: both;
548
- }
549
- .wpmud .row-sep {
550
- height: 1px;
551
- margin-bottom: 30px;
552
- width: auto;
553
- display: block;
554
- }
555
- .wpmud .row-sep:before {
556
- content: '';
557
- display: block;
558
- position: absolute;
559
- left: 0;
560
- right: 0;
561
- bottom: 0;
562
- border-bottom: 1px solid #E5E5E5;
563
- }
564
- .wpmud .row-sep .button {
565
- margin: 20px auto 0;
566
- display: block;
567
- width: 480px;
568
- text-align: center;
569
- position: relative;
570
- top: -20px;
571
- position: relative;
572
- z-index: 1;
573
- background: #FFF;
574
- }
575
- .wpmud .row-sep .button.button-small {
576
- top: -14px;
577
- }
578
- .wpmud .row-sep .button:before,
579
- .wpmud .row-sep .button:after {
580
- content: '';
581
- position: absolute;
582
- z-index: 0;
583
- left: -30px;
584
- width: 30px;
585
- top: 0;
586
- bottom: 0;
587
- background: #FFF;
588
- }
589
- .wpmud .row-sep .button:after {
590
- right: -30px;
591
- left: auto;
592
- }
593
- .wpmud .row-space {
594
- margin-bottom: 30px;
595
- }
596
- .wpmud .row .col-third,
597
- .wpmud .row .col-two-third,
598
- .wpmud .row .col-half {
599
- display: table-cell;
600
- padding: 0 15px 0 15px;
601
- position: relative;
602
- vertical-align: top;
603
- }
604
- .wpmud .row .col-third {
605
- width: 33.3333%;
606
- }
607
- .wpmud .row .col-two-third {
608
- width: 66.6666%;
609
- }
610
- .wpmud .row .col-half {
611
- width: 50%;
612
- }
613
- .wpmud .row .col-third:first-child,
614
- .wpmud .row .col-two-third:first-child,
615
- .wpmud .row .col-half:first-child {
616
- padding-left: 0;
617
- }
618
- .wpmud .row .col-third:last-child,
619
- .wpmud .row .col-two-third:last-child,
620
- .wpmud .row .col-half:last-child {
621
- padding-right: 0;
622
- }
623
-
624
- /* ****************************************************************************
625
- * 7. ELEMENT: HORIZONTAL TABS
626
- */
627
- .wpmud .tabs {
628
- float: none;
629
- position: relative;
630
- padding: 0;
631
- margin: 0 0 30px;
632
- background-color: #FFF;
633
- border-top-left-radius: 5px;
634
- border-top-right-radius: 5px;
635
- }
636
- .wpmud .tabs:before,
637
- .wpmud .tabs:after {
638
- content: '';
639
- display: table;
640
- clear: both;
641
- }
642
- .wpmud .tabs .tab {
643
- float: left;
644
- }
645
- .wpmud .tabs .tab:first-child label {
646
- border-top-left-radius: 5px;
647
- }
648
- .wpmud .tabs .tab label {
649
- display: block;
650
- padding: 10px 30px;
651
- line-height: 40px;
652
- margin: 0;
653
- top: 0;
654
- height: 60px;
655
- cursor: pointer;
656
- position: relative;
657
- background-color: #FEFEFE;
658
- color: #BFBABA;
659
- border-right: 1px solid #EAEAEA;
660
- text-transform: uppercase;
661
- }
662
- .wpmud .tabs .tab input[type=radio] {
663
- display: none;
664
- }
665
- .wpmud .tabs .tab input[type=radio]:checked + label {
666
- background-color: #FFF;
667
- color: #777771;
668
- height: 61px;
669
- z-index: 3;
670
- }
671
- .wpmud .tabs .tab .content {
672
- z-index: 2;
673
- display: none;
674
- text-align: left;
675
- left: 0;
676
- right: 0;
677
- width: auto;
678
- padding: 30px;
679
- position: absolute;
680
- top: 60px;
681
- min-height: 150px;
682
- border-top: 1px solid #EAEAEA;
683
- background-color: #FFF;
684
- overflow: auto;
685
- border-bottom-left-radius: 5px;
686
- border-bottom-right-radius: 5px;
687
- box-shadow: 0 2px 0 #EAEAEA;
688
- }
689
- .wpmud .tabs .tab input[type=radio]:checked ~ .content {
690
- display: block;
691
- }
692
- .wpmud .dev-box .tabs {
693
- border: 1px solid #EAEAEA;
694
- }
695
- .wpmud .dev-box .tabs .tab .content {
696
- border: 1px solid #EAEAEA;
697
- left: -1px;
698
- right: -1px;
699
- box-shadow: none;
700
- }
701
-
702
- /* ****************************************************************************
703
- * 8. ELEMENT: VERTICAL TABS
704
- */
705
- .wpmud .vertical-tabs {
706
- display: block;
707
- position: relative;
708
- margin-bottom: 30px;
709
- }
710
- .wpmud .vertical-tabs > .tab > input[type="radio"] {
711
- /* NO `top: -9999px` - else page scrolls to top when tab is clicked! */
712
- left: -9999px;
713
- position: absolute;
714
- z-index: -10;
715
- opacity: 0;
716
- }
717
- .wpmud .vertical-tabs > .tab {
718
- display: block;
719
- }
720
- .wpmud .vertical-tabs > .tab > label {
721
- cursor: pointer;
722
- display: block;
723
- padding: 15px 20px;
724
- text-transform: uppercase;
725
- font-size: 13px;
726
- line-height: 28px;
727
- position: relative;
728
- width: 200px;
729
- color: #AAA;
730
- margin: 0;
731
- border-radius: 5px 0 0 5px;
732
- z-index: 10;
733
- transition: color 0.3s, background 0.3s;
734
- }
735
- .wpmud .vertical-tabs > .tab > label * {
736
- line-height: 28px;
737
- }
738
- .wpmud .vertical-tabs > .tab > label:hover {
739
- color: #777771;
740
- }
741
- .wpmud .vertical-tabs > .tab > label:after {
742
- content: '';
743
- position: absolute;
744
- left: 20px;
745
- right: 20px;
746
- bottom: -1px;
747
- height: 1px;
748
- border-bottom: 1px solid #E5E5E5;
749
- }
750
- .wpmud .vertical-tabs > .tab:last-child > label:after {
751
- display: none;
752
- }
753
- .wpmud .vertical-tabs > .tab > .content {
754
- display: none;
755
- left: 200px;
756
- right: 0;
757
- min-width: 300px;
758
- padding: 20px;
759
- position: absolute;
760
- top: 0;
761
- background: #FFF;
762
- box-shadow: 0 2px 0 #EAEAEA;
763
- }
764
- .wpmud .vertical-tabs > .tab > input[type="radio"]:checked + label {
765
- background: #FFF;
766
- color: #333;
767
- box-shadow: 0 2px 0 #EAEAEA;
768
- }
769
- .wpmud .vertical-tabs > .tab > input[type="radio"]:checked + label:after {
770
- display: none;
771
- }
772
- .wpmud .vertical-tabs > .tab > input[type="radio"]:checked ~ .content {
773
- display: block;
774
- }
775
- .wpmud .vertical-tabs .tab-title {
776
- border-bottom: 1px solid #EAEAEA;
777
- margin: -20px -20px 20px -20px;
778
- line-height: 28px;
779
- padding: 15px 20px;
780
- text-align: left;
781
- font-size: 16px;
782
- text-transform: uppercase;
783
- font-weight: bold;
784
- }
785
-
786
- /* ****************************************************************************
787
- * 9. ELEMENT: TOOLTIPS
788
- */
789
- .wpmud .dev-tip {
790
- width: 420px;
791
- margin: 0 auto 10px;
792
- padding: 20px;
793
- background-color: #0B2F3F;
794
- border-radius: 5px;
795
- position: relative;
796
- }
797
- .wpmud .dev-tip:after {
798
- content: '';
799
- position: absolute;
800
- bottom: -14px;
801
- left: 50%;
802
- margin-left: -7px;
803
- border: 7px solid transparent;
804
- border-top-color: #0B2F3F;
805
- }
806
- .wpmud .dev-tip,
807
- .wpmud .dev-tip p {
808
- font-size: 15px;
809
- line-height: 18px;
810
- color: #EEE;
811
- }
812
- .wpmud [tooltip] {
813
- position: relative;
814
- overflow: visible;
815
- }
816
- .wpmud [tooltip]:before {
817
- content: '';
818
- position: absolute;
819
- border: 5px solid transparent;
820
- border-top-color: #0B2F3F;
821
- bottom: 100%;
822
- left: 50%;
823
- margin-left: -5px;
824
- margin-bottom: -5px;
825
- opacity: 0;
826
- z-index: -1;
827
- transition: margin .2s, opacity .2s, z-index .2s linear .2s;
828
- pointer-events: none;
829
- }
830
- .wpmud [tooltip]:after {
831
- content: attr(tooltip);
832
- position: absolute;
833
- background: #0B2F3F;
834
- color: #FFF;
835
- bottom: 100%;
836
- left: 50%;
837
- width: 200px;
838
- margin-left: -100px;
839
- margin-bottom: 5px;
840
- text-align: center;
841
- padding: 5px;
842
- border-radius: 4px;
843
- text-transform: uppercase;
844
- font: 600 13px/20px 'Roboto Condensed';
845
- opacity: 0;
846
- z-index: -1;
847
- transition: margin .2s, opacity .2s, z-index .2s linear .2s;
848
- white-space: pre-wrap;
849
- pointer-events: none;
850
- }
851
- .wpmud [tooltip].tooltip-s:after {
852
- width: 150px;
853
- margin-left: -75px;
854
- }
855
- .wpmud [tooltip].tooltip-l:after {
856
- width: 280px;
857
- margin-left: -140px;
858
- }
859
- .wpmud [tooltip].tooltip-right:after {
860
- margin-left: -180px;
861
- }
862
- .wpmud [tooltip].tooltip-s.tooltip-right:after {
863
- margin-left: -130px;
864
- }
865
- .wpmud [tooltip].tooltip-l.tooltip-right:after {
866
- margin-left: -260px;
867
- }
868
- .wpmud [tooltip].tooltip-bottom:before {
869
- border-color: transparent;
870
- border-bottom-color: #0B2F3F;
871
- top: 100%;
872
- bottom: auto;
873
- margin-top: -5px;
874
- margin-bottom: 0;
875
- }
876
- .wpmud [tooltip].tooltip-bottom:after {
877
- bottom: auto;
878
- top: 100%;
879
- margin-top: 5px;
880
- margin-bottom: 0;
881
- }
882
- .wpmud [tooltip]:hover:before {
883
- opacity: 1;
884
- z-index: 1;
885
- margin-bottom: 0;
886
- transition: margin .2s, opacity .2s;
887
- }
888
- .wpmud [tooltip]:hover:after {
889
- opacity: 1;
890
- z-index: 1;
891
- margin-bottom: 10px;
892
- transition: margin .2s, opacity .2s;
893
- }
894
- .wpmud .disabled[tooltip]:before,
895
- .wpmud .disabled[tooltip]:after {
896
- display: none;
897
- }
898
-
899
- /* ****************************************************************************
900
- * 10. ELEMENT: OVERLAYS
901
- */
902
- .wpmud dialog {
903
- display: none;
904
- }
905
- .wpmud .dev-overlay {
906
- position: fixed;
907
- left: 160px;
908
- top: 32px;
909
- right: 0;
910
- bottom: 0;
911
- z-index: 1000; /* fixed position is always on top */
912
- display: none; /* hidden by default */
913
- overflow: visible;
914
- }
915
- .wpmud.folded .dev-overlay {
916
- left: 36px;
917
- }
918
- .wpmud .dev-overlay .back {
919
- position: absolute;
920
- top: 0;
921
- left: 0;
922
- right: 0;
923
- bottom: 0;
924
- background: rgba(20, 72, 95, .85);
925
- z-index: 0;
926
- }
927
- .wpmud .dev-overlay .box-scroll {
928
- position: absolute;
929
- left: 0;
930
- top: 0;
931
- right: 0;
932
- bottom: 0;
933
- z-index: 1;
934
- overflow: auto;
935
- }
936
- .wpmud .dev-overlay .box {
937
- position: absolute;
938
- top: 0;
939
- min-height: 120px;
940
- left: 50%;
941
- margin: 20px 0 20px -420px;
942
- width: 840px;
943
- background: #FFF;
944
- border-radius: 5px;
945
- padding: 40px;
946
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
947
- box-sizing: border-box;
948
- z-index: 2;
949
- overflow: hidden;
950
- }
951
- .wpmud .dev-overlay.small .box {
952
- width: 600px;
953
- margin-left: -300px;
954
- }
955
- .wpmud .dev-overlay .box.loading:before {
956
- position: absolute;
957
- left: 0;
958
- top: 0;
959
- right: 0;
960
- bottom: 0;
961
- background-color: rgba(255,255,255,0.75);
962
- z-index: 1;
963
- width: auto;
964
- height: auto;
965
- background-size: 18px;
966
- }
967
- .wpmud .dev-overlay.no-margin .content {
968
- margin: -40px;
969
- }
970
- .wpmud .dev-overlay.no-margin .fullsize {
971
- display: block;
972
- width: 100%;
973
- }
974
- .wpmud .dev-overlay .box .title {
975
- min-height: 60px;
976
- padding: 0 60px 0 40px;
977
- border-bottom: 1px solid #EAEAEA;
978
- margin: -40px -40px 40px -40px;
979
- }
980
- .wpmud .dev-overlay .title .close {
981
- position: absolute;
982
- right: 0;
983
- top: 0;
984
- padding: 0 24px;
985
- line-height: 60px;
986
- font-size: 24px;
987
- font-weight: 400;
988
- color: #BABABA;
989
- cursor: pointer;
990
- }
991
- .wpmud .dev-overlay .title .close:hover {
992
- color: #777771;
993
- }
994
- .wpmud .dev-overlay .title h3 {
995
- font-family: 'Roboto Condensed', 'Roboto', sans-serif;
996
- font-size: 18px;
997
- font-weight: 700;
998
- color: #777771;
999
- line-height: 30px;
1000
- margin: 0;
1001
- padding: 15px 0;
1002
- text-align: left;
1003
- }
1004
- .wpmud .dev-overlay .title .title-action {
1005
- position: absolute;
1006
- right: 60px;
1007
- top: 0;
1008
- height: 60px;
1009
- vertical-align: middle;
1010
- box-sizing: border-box;
1011
- padding: 10px 0;
1012
- }
1013
- .wpmud .dev-overlay .title .title-action .button-small {
1014
- margin: 5px 0;
1015
- }
1016
- .wpmud-html.has-overlay {
1017
- overflow: hidden;
1018
- }
1019
- .wpmud-html.has-overlay ul#adminmenu a.wp-has-current-submenu:after,
1020
- .wpmud-html.has-overlay ul#adminmenu > li.current > a.current:after {
1021
- border-right-color: #356175;
1022
- }
1023
-
1024
- /* ****************************************************************************
1025
- * 11. ELEMENT: DASHBOARD NOTIFICATONS (enhancements)
1026
- */
1027
- .wpmud .wrap .frash-notice.notice {
1028
- box-shadow: 0 0 0 2px #E8E8E5;
1029
- }
1030
- .wpmud .frash-notice .frash-notice-message {
1031
- font-family: 'Roboto', sans-serif;
1032
- font-weight: 400;
1033
- font-size: 15px;
1034
- line-height: 1.65em;
1035
- color: #777771;
1036
- }
1037
- .wpmud .frash-notice .frash-notice-message b.block {
1038
- display: block;
1039
- font-size: 16.5px;
1040
- }
1041
-
1042
- /* ****************************************************************************
1043
- * 12. ELEMENT: BUTTONS
1044
- */
1045
- .wpmud button:focus,
1046
- .wpmud .button:focus {
1047
- outline-color: transparent;
1048
- outline-style: none;
1049
- border: 0;
1050
- box-shadow: none;
1051
- }
1052
- .wpmud button,
1053
- .wpmud .button {
1054
- font: 500 15px/20px 'Roboto';
1055
- background: #00ACCA;
1056
- color: #FFF;
1057
- text-transform: uppercase;
1058
- padding: 11px 20px 9px;
1059
- height: auto;
1060
- display: inline-block;
1061
- margin: 0;
1062
- border: 0;
1063
- border-radius: 5px;
1064
- -moz-border-radius: 5px;
1065
- cursor: pointer;
1066
- box-shadow: none;
1067
- -moz-transition: color 0.3s, opacity 0.3s;
1068
- transition: color 0.3s, opacity 0.3s;
1069
- text-shadow: none;
1070
- }
1071
- .wpmud button + button,
1072
- .wpmud .button + button,
1073
- .wpmud button + .button,
1074
- .wpmud .button + .button,
1075
- .wpmud a + button,
1076
- .wpmud a + .button {
1077
- margin-left: 10px;
1078
- }
1079
- .wpmud button:hover:not(:focus):not(:active),
1080
- .wpmud .button:hover:not(:focus):not(:active) {
1081
- background-color: #0093B1;
1082
- color: #FFF;
1083
- box-shadow: none;
1084
- }
1085
- /* http://www.colorzilla.com/gradient-editor/#0082a1+0,008fae+100 */
1086
- .wpmud button:active,
1087
- .wpmud button:focus,
1088
- .wpmud .button:active,
1089
- .wpmud .button:focus {
1090
- color: #FFF;
1091
- box-shadow: none;
1092
- background: #0082a1;
1093
- background: -moz-linear-gradient(top, #0082a1 0%, #008fae 100%);
1094
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#0082a1), color-stop(100%,#008fae));
1095
- background: -webkit-linear-gradient(top, #0082a1 0%,#008fae 100%);
1096
- background: -o-linear-gradient(top, #0082a1 0%,#008fae 100%);
1097
- background: -ms-linear-gradient(top, #0082a1 0%,#008fae 100%);
1098
- background: linear-gradient(to bottom, #0082a1 0%,#008fae 100%);
1099
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0082a1', endColorstr='#008fae',GradientType=0 );
1100
- }
1101
- /* Variation: Green button */
1102
- .wpmud .button-green {
1103
- background: #1ABC9C;
1104
- }
1105
- .wpmud .button-green:hover:not(:focus):not(:active) {
1106
- background: #148F77;
1107
- }
1108
- /* http://www.colorzilla.com/gradient-editor/#0a6550+0,0e9272+100 */
1109
- .wpmud .button-green:active,
1110
- .wpmud .button-green:focus {
1111
- color: #FFF;
1112
- background: #0a6550;
1113
- background: -moz-linear-gradient(top, #0a6550 0%, #0e9272 100%);
1114
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#0a6550), color-stop(100%,#0e9272));
1115
- background: -webkit-linear-gradient(top, #0a6550 0%,#0e9272 100%);
1116
- background: -o-linear-gradient(top, #0a6550 0%,#0e9272 100%);
1117
- background: -ms-linear-gradient(top, #0a6550 0%,#0e9272 100%);
1118
- background: linear-gradient(to bottom, #0a6550 0%,#0e9272 100%);
1119
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0a6550', endColorstr='#0e9272',GradientType=0 );
1120
- }
1121
- /* Variation: Secondary Button */
1122
- .wpmud .button-secondary {
1123
- background: transparent;
1124
- color: #00ACCA;
1125
- box-shadow: 0 0 0 2px #00ACCA inset;
1126
- }
1127
- /* Variation: Red Button */
1128
- .wpmud .button-red {
1129
- background: transparent;
1130
- color: #fd6e70;
1131
- box-shadow: 0 0 0 2px #fd6e70 inset;
1132
- }
1133
- .wpmud .button-red:hover:not(:focus):not(:active) {
1134
- background: #fd6e70;
1135
- }
1136
- /* http://www.colorzilla.com/gradient-editor/#E24A4C+0,fd6e70+100 */
1137
- .wpmud .button-red:active,
1138
- .wpmud .button-red:focus {
1139
- color: #FFFFFF;
1140
- box-shadow: 0 0 0 1px #e24a4c inset;
1141
- background: #e24a4c;
1142
- background: -moz-linear-gradient(top, #e24a4c 0%, #fd6e70 100%);
1143
- background: -webkit-linear-gradient(top, #e24a4c 0%,#fd6e70 100%);
1144
- background: linear-gradient(to bottom, #e24a4c 0%,#fd6e70 100%);
1145
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e24a4c', endColorstr='#fd6e70',GradientType=0 );
1146
- }
1147
- /* Variation: Grey */
1148
- .wpmud .button-grey {
1149
- background: #AEAEAE;
1150
- }
1151
- .wpmud .button-grey:hover:not(:focus):not(:active) {
1152
- background: #9E9E9E;
1153
- }
1154
- /* http://www.colorzilla.com/gradient-editor/#8e8e8e+0,9e9e9e+100 */
1155
- .wpmud .button-grey:active,
1156
- .wpmud .button-grey:focus {
1157
- color: #FFFFFF;
1158
- box-shadow: 0 0 0 1px #D8D8D8 inset;
1159
- background: #8e8e8e;
1160
- background: -moz-linear-gradient(top, #8e8e8e 0%, #9e9e9e 100%);
1161
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8e8e8e), color-stop(100%,#9e9e9e));
1162
- background: -webkit-linear-gradient(top, #8e8e8e 0%,#9e9e9e 100%);
1163
- background: -o-linear-gradient(top, #8e8e8e 0%,#9e9e9e 100%);
1164
- background: -ms-linear-gradient(top, #8e8e8e 0%,#9e9e9e 100%);
1165
- background: linear-gradient(to bottom, #8e8e8e 0%,#9e9e9e 100%);
1166
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8e8e8e', endColorstr='#9e9e9e',GradientType=0 );
1167
- }
1168
- /* Variation: Yellow */
1169
- .wpmud .button-yellow {
1170
- background: #FDCE43;
1171
- }
1172
- .wpmud .button-yellow:hover:not(:focus):not(:active) {
1173
- background: #E6BB3B;
1174
- }
1175
- /* http://www.colorzilla.com/gradient-editor/#E6BB3B+0,FDCE43+100 */
1176
- .wpmud .button-yellow:active,
1177
- .wpmud .button-yellow:focus {
1178
- color: #FFFFFF;
1179
- box-shadow: 0 0 0 1px #d6a719 inset;
1180
- background: #d6a719;
1181
- background: -moz-linear-gradient(top, #d6a719 0%, #e6bb3b 100%);
1182
- background: -webkit-linear-gradient(top, #d6a719 0%,#e6bb3b 100%);
1183
- background: linear-gradient(to bottom, #d6a719 0%,#e6bb3b 100%);
1184
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d6a719', endColorstr='#e6bb3b',GradientType=0 );
1185
- }
1186
- /* Variation: Light */
1187
- .wpmud .button-light {
1188
- background: transparent;
1189
- color: #777771;
1190
- box-shadow: 0 0 0 1px #E3E3E3 inset;
1191
- }
1192
- /* http://www.colorzilla.com/gradient-editor/#f4f4f4+0,e8e8e8+100 */
1193
- .wpmud .button-light:hover:not(:focus):not(:active) {
1194
- color: #555;
1195
- box-shadow: 0 0 0 1px #D8D8D8 inset;
1196
- background: #f1f1f1;
1197
- }
1198
- /* http://www.colorzilla.com/gradient-editor/#d0d0d0+0,f4f4f4+100 */
1199
- .wpmud .button-light:active,
1200
- .wpmud .button-light:focus {
1201
- color: #444;
1202
- box-shadow: 0 0 0 1px #D0D0D0 inset;
1203
- background: #d8d8d8;
1204
- background: -moz-linear-gradient(top, #d8d8d8 0%, #f4f4f4 100%);
1205
- background: -webkit-linear-gradient(top, #d8d8d8 0%,#f4f4f4 100%);
1206
- background: linear-gradient(to bottom, #d8d8d8 0%,#f4f4f4 100%);
1207
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d8d8d8', endColorstr='#f4f4f4',GradientType=0 );
1208
- }
1209
- /* Variation: Light */
1210
- .wpmud .button-deactivated,
1211
- .wpmud .button-deactivated:hover:not(:focus):not(:active),
1212
- .wpmud .button-deactivated:active,
1213
- .wpmud .button-deactivated:focus {
1214
- color: #AAA;
1215
- box-shadow: 0 0 0 1px #F3F3F3 inset;
1216
- background: #F8F8F8;
1217
- }
1218
- /* Variation: Text button */
1219
- .wpmud .button-text {
1220
- background: transparent;
1221
- color: #777771;
1222
- box-shadow: none;
1223
- border: none;
1224
- padding-left: 0;
1225
- padding-right: 0;
1226
- }
1227
- .wpmud .button-text:hover:not(:focus):not(:active) {
1228
- color: #0093B1;
1229
- box-shadow: none;
1230
- background: transparent;
1231
- }
1232
- /* http://www.colorzilla.com/gradient-editor/#e8e8e8+0,f4f4f4+100 */
1233
- .wpmud .button-text:active,
1234
- .wpmud .button-text:focus {
1235
- color: #0093B1;
1236
- background: transparent;
1237
- box-shadow: none;
1238
- }
1239
- .wpmud .button.button-text.button-small,
1240
- .wpmud .button.button-text.button-big {
1241
- padding-left: 0;
1242
- padding-right: 0;
1243
- }
1244
- .wpmud .button-text.disabled,
1245
- .wpmud .button-text:disabled {
1246
- background: transparent !important;
1247
- }
1248
- /* Variation: Small button */
1249
- .wpmud .button.button-small {
1250
- font: 500 14px/20px 'Roboto Condensed';
1251
- padding: 6px 12px 4px;
1252
- height: auto;
1253
- }
1254
- /* Variation: Big button */
1255
- .wpmud .button.button-big {
1256
- padding: 18px 24px 17px;
1257
- height: auto;
1258
- }
1259
- /* Variation: CTA (normal) */
1260
- .wpmud .button.button-cta {
1261
- box-shadow: 0px 3px 0px 0px #0093B1;
1262
- }
1263
- .wpmud .button.button-cta:hover:not(:focus):not(:active),
1264
- .wpmud .button.button-cta:active,
1265
- .wpmud .button.button-cta:focus {
1266
- box-shadow: 0px 3px 0px 0px #007391;
1267
- }
1268
- /* Variation: CTA (green) */
1269
- .wpmud .button.button-green.button-cta {
1270
- box-shadow: 0px 3px 0px 0px #1F947B;
1271
- }
1272
- .wpmud .button.button-green.button-cta:hover:not(:focus):not(:active),
1273
- .wpmud .button.button-green.button-cta:active,
1274
- .wpmud .button.button-green.button-cta:focus {
1275
- box-shadow: 0px 3px 0px 0px #00745B;
1276
- }
1277
- /* Restore the default WP dismiss button */
1278
- .wpmud .notice-dismiss,
1279
- .wpmud .notice-dismiss:hover:not(:focus):not(:active),
1280
- .wpmud .notice-dismiss:hover,
1281
- .wpmud .notice-dismiss:focus,
1282
- .wpmud .notice-dismiss:active {
1283
- border: none;
1284
- margin: 0;
1285
- padding: 9px;
1286
- background: none;
1287
- color: #b4b9be;
1288
- cursor: pointer;
1289
- }
1290
-
1291
- /* ****************************************************************************
1292
- * 13. ELEMENT: FORMS
1293
- */
1294
- .wpmud label {
1295
- display: block;
1296
- padding: 7px 10px;
1297
- font-weight: 500;
1298
- font-family: 'Roboto', sans-serif;
1299
- font-size: 16px;
1300
- margin: 0 0 4px;
1301
- color: #777771;
1302
- }
1303
- .wpmud label.inline-label {
1304
- display: inline-block;
1305
- margin: 0;
1306
- padding: 0;
1307
- font-weight: inherit;
1308
- font-size: inherit;
1309
- }
1310
- .wpmud form > div {
1311
- padding-top: 5px;
1312
- }
1313
- .wpmud form > div:first-child,
1314
- .wpmud form > div.buttons {
1315
- padding-top: 0;
1316
- }
1317
-
1318
- /* ****************************************************************************
1319
- * 14. ELEMENT: INPUT (general styles)
1320
- */
1321
- .wpmud :focus,
1322
- .wpmud textarea:focus,
1323
- .wpmud select:focus,
1324
- .wpmud input:focus {
1325
- outline-color: transparent;
1326
- outline-style: none;
1327
- box-shadow: none;
1328
- }
1329
- .wpmud .input,
1330
- .wpmud input[type="text"],
1331
- .wpmud input[type="email"],
1332
- .wpmud input[type="search"],
1333
- .wpmud input[type="password"],
1334
- .wpmud select,
1335
- .wpmud textarea {
1336
- color: #999;
1337
- display: block;
1338
- font: 500 15px/25px 'Roboto';
1339
- width: 100%;
1340
- max-width: 100%;
1341
- padding: 7px 15px 6px;
1342
- margin: 0px 0px 15px 0px;
1343
- border: 1px solid #DDD;
1344
- background: #FFF;
1345
- border-radius: 4px;
1346
- box-shadow: none;
1347
- transition-property: background, color, border-color;
1348
- transition-duration: 0.3s;
1349
- }
1350
- .wpmud .input:hover,
1351
- .wpmud .input:focus,
1352
- .wpmud input[type="text"]:hover,
1353
- .wpmud input[type="text"]:focus,
1354
- .wpmud input[type="email"]:hover,
1355
- .wpmud input[type="email"]:focus,
1356
- .wpmud input[type="search"]:hover,
1357
- .wpmud input[type="search"]:focus,
1358
- .wpmud input[type="password"]:hover,
1359
- .wpmud input[type="password"]:focus,
1360
- .wpmud select:hover,
1361
- .wpmud select:focus,
1362
- .wpmud textarea:hover,
1363
- .wpmud textarea:focus {
1364
- border-color: #BBB;
1365
- color: #3D464D;
1366
- }
1367
- .wpmud .input:hover:not(:focus),
1368
- .wpmud input[type="text"]:hover:not(:focus),
1369
- .wpmud input[type="email"]:hover:not(:focus),
1370
- .wpmud input[type="search"]:hover:not(:focus),
1371
- .wpmud input[type="password"]:hover:not(:focus),
1372
- .wpmud select:hover:not(:focus),
1373
- .wpmud textarea:hover:not(:focus) {
1374
- color: #3D464D;
1375
- }
1376
- .wpmud .input:disabled,
1377
- .wpmud .input.disabled,
1378
- .wpmud input[type="text"]:disabled,
1379
- .wpmud input[type="text"].disabled,
1380
- .wpmud input[type="email"]:disabled,
1381
- .wpmud input[type="email"].disabled,
1382
- .wpmud input[type="search"]:disabled,
1383
- .wpmud input[type="search"].disabled,
1384
- .wpmud input[type="password"]:disabled,
1385
- .wpmud input[type="password"].disabled,
1386
- .wpmud select:disabled,
1387
- .wpmud select.disabled,
1388
- .wpmud textarea:disabled,
1389
- .wpmud textarea.disabled {
1390
- background: #F6F6F6 !important;
1391
- color: #AAA !important;
1392
- border-color: #DDD !important;
1393
- cursor: default;
1394
- }
1395
- .wpmud input[type="text"]::-webkit-input-placeholder,
1396
- .wpmud input[type="email"]::-webkit-input-placeholder,
1397
- .wpmud input[type="search"]::-webkit-input-placeholder,
1398
- .wpmud input[type="password"]::-webkit-input-placeholder,
1399
- .wpmud textarea::-webkit-input-placeholder {
1400
- position: relative;
1401
- top: 0;
1402
- }
1403
- .wpmud input[type="text"]:focus::-webkit-input-placeholder,
1404
- .wpmud input[type="email"]:focus::-webkit-input-placeholder,
1405
- .wpmud input[type="search"]:focus::-webkit-input-placeholder,
1406
- .wpmud input[type="password"]:focus::-webkit-input-placeholder,
1407
- .wpmud textarea:focus::-webkit-input-placeholder {
1408
- transition: opacity 0.3s 0.4s ease;
1409
- opacity: 0.25;
1410
- }
1411
-
1412
- /* ****************************************************************************
1413
- * 15. ELEMENT: TOGGLE (styled checkbox)
1414
- */
1415
- .wpmud .toggle {
1416
- position: relative;
1417
- display: inline-block;
1418
- vertical-align: middle;
1419
- white-space: nowrap;
1420
- }
1421
- .wpmud .toggle .toggle-checkbox {
1422
- display: none;
1423
- }
1424
- .wpmud .toggle .toggle-label {
1425
- background: #1ABC9C;
1426
- display: inline-block;
1427
- position: relative;
1428
- height: 21px;
1429
- width: 34px;
1430
- padding: 0;
1431
- margin: 0;
1432
- border-radius: 11px;
1433
- transition: background .2s;
1434
- }
1435
- .wpmud .toggle .toggle-label:before {
1436
- content: '';
1437
- position: absolute;
1438
- transition: all .2s;
1439
- border-radius: 11px;
1440
- background: #DDD;
1441
- }
1442
- .wpmud .toggle .toggle-label:after {
1443
- content: '';
1444
- background: #FCFCFC;
1445
- display: inline-block;
1446
- position: relative;
1447
- width: 19px;
1448
- height: 19px;
1449
- transition: margin .2s;
1450
- border-radius: 11px;
1451
- margin: 1px;
1452
- box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
1453
- }
1454
- .wpmud .toggle .toggle-checkbox:hover + .toggle-label:after,
1455
- .wpmud .toggle .toggle-label:hover:after {
1456
- background: #FFF;
1457
- box-shadow: 0 0 15px 0px rgba(0,0,0,0.03), 0 5px 2px 0px rgba(0,0,0,0.05), 0 0 0 1px rgba(0,0,0,0.2);
1458
- }
1459
- .wpmud .toggle .toggle-checkbox + .toggle-label {
1460
- background: transparent;
1461
- }
1462
- .wpmud .toggle .toggle-checkbox + .toggle-label:before {
1463
- top: 0;
1464
- left: 0;
1465
- right: 0;
1466
- bottom: 0;
1467
- }
1468
- .wpmud .toggle .toggle-checkbox + .toggle-label:after {
1469
- margin-left: 1px;
1470
- }
1471
- .wpmud .toggle .toggle-checkbox:checked + .toggle-label {
1472
- background: #1ABC9C;
1473
- }
1474
- .wpmud .toggle .toggle-checkbox:checked + .toggle-label:before {
1475
- top: 1px;
1476
- left: 14px;
1477
- right: 1px;
1478
- bottom: 1px;
1479
- }
1480
- .wpmud .toggle .toggle-checkbox:checked + .toggle-label:after {
1481
- margin-left: 14px;
1482
- }
1483
- .wpmud .toggle.disabled label,
1484
- .wpmud .toggle.loading label {
1485
- opacity: 0.6;
1486
- cursor: default;
1487
- }
1488
- .wpmud .toggle.disabled .toggle-checkbox:hover + .toggle-label:after,
1489
- .wpmud .toggle.loading .toggle-checkbox:hover + .toggle-label:after,
1490
- .wpmud .toggle.disabled .toggle-label:hover:after,
1491
- .wpmud .toggle.loading .toggle-label:hover:after {
1492
- background: #FCFCFC;
1493
- box-shadow: 0 0 0 1px rgba(0,0,0,0.1);
1494
- }
1495
- .wpmud .toggle.disabled:before,
1496
- .wpmud .toggle.loading:before {
1497
- vertical-align: middle;
1498
- margin-right: 6px;
1499
- }
1500
-
1501
- /* ****************************************************************************
1502
- * 16. ELEMENT: RADIO GROUP (styled radio)
1503
- */
1504
- .wpmud .radio-group {
1505
- border: 1px solid #DDD;
1506
- border-radius: 5px;
1507
- display: inline-block;
1508
- border-spacing: 0;
1509
- border-collapse: separate;
1510
- position: relative;
1511
- }
1512
- .wpmud .radio-group input[type="radio"] {
1513
- display: none;
1514
- }
1515
- .wpmud .radio-group input[type="radio"] + label {
1516
- background: rgba(255,255,255,0.35);
1517
- color: #C6C6C6;
1518
- display: table-cell;
1519
- border-right: 1px solid #DDD;
1520
- position: relative;
1521
- padding: 8px 10px;
1522
-
1523
- transition-property: background, color;
1524
- transition-duration: 0.3s;
1525
- }
1526
- .wpmud .radio-group input[type="radio"] + label > [tooltip] {
1527
- position: absolute;
1528
- left: 0;
1529
- top: 0;
1530
- bottom: 0;
1531
- right: 0;
1532
- z-index: 9;
1533
- }
1534
- .wpmud .radio-group input[type="radio"]:first-child + label {
1535
- border-radius: 4px 0 0 4px;
1536
- }
1537
- .wpmud .radio-group input[type="radio"] + label:last-child {
1538
- border-radius: 0 4px 4px 0;
1539
- border-right: 0;
1540
- }
1541
- .wpmud .radio-group input[type="radio"] + label:hover {
1542
- box-shadow: 0 0 0 1px rgba(0,0,0,0.05) inset;
1543
- color: #777771;
1544
- }
1545
- .wpmud .radio-group input[type="radio"]:checked + label {
1546
- box-shadow: 0 0 0 1px rgba(0,0,0,0.2) inset;
1547
- background: #F9F9F9;
1548
- color: #555;
1549
- }
1550
- .wpmud .radio-group.with-icon input[type="radio"] + label {
1551
- padding-right: 36px;
1552
- }
1553
- .wpmud .radio-group.with-icon input[type="radio"] + label:after {
1554
- content: '\68';
1555
-
1556
- font-size: 22px;
1557
- vertical-align: middle;
1558
- position: absolute;
1559
- right: 8px;
1560
- top: 50%;
1561
- width: 22px;
1562
- height: 22px;
1563
- margin-top: -11px;
1564
- opacity: 0.8;
1565
- font-family: 'WPMU-DEV-App-Icons';
1566
- speak: none;
1567
- font-style: normal;
1568
- font-weight: normal;
1569
- font-variant: normal;
1570
- text-transform: none;
1571
- line-height: 22px;
1572
- -webkit-font-smoothing: antialiased;
1573
- -moz-osx-font-smoothing: grayscale;
1574
- transition-property: color, opacity;
1575
- transition-duration: 0.2s;
1576
- }
1577
- .wpmud .radio-group.with-icon input[type="radio"] + label:hover:after {
1578
- color: #1ABC9C;
1579
- }
1580
- .wpmud .radio-group.with-icon input[type="radio"]:checked + label {
1581
- box-shadow: none;
1582
- }
1583
- .wpmud .radio-group.with-icon input[type="radio"]:checked + label:after {
1584
- content: '\67';
1585
- color: #1ABC9C;
1586
- box-shadow: none;
1587
- opacity: 1;
1588
- }
1589
-
1590
- /* ****************************************************************************
1591
- * 17. ELEMENT: SELECT
1592
- */
1593
- .wpmud .select-container {
1594
- position: relative;
1595
- z-index: 1;
1596
- display: block;
1597
- border: 1px solid #ddd;
1598
- background: #FFF;
1599
- cursor: pointer;
1600
- border-radius: 4px;
1601
- transition-property: background, border-color;
1602
- transition-duration: 0.3s;
1603
- z-index: 1;
1604
- text-align: left;
1605
- }
1606
- .wpmud .select-container .dropdown-handle {
1607
- transition: border-color 0.3s;
1608
- display: inline-block;
1609
- position: absolute;
1610
- width: 45px;
1611
- height: 41px;
1612
- top: -1px;
1613
- right: -1px;
1614
- z-index: 1011;
1615
- border-radius: 0 4px 4px 0;
1616
- border: 1px solid #DDD;
1617
- border-bottom: 0;
1618
- border-left-color: transparent;
1619
- background: #FFF;
1620
- padding: 0;
1621
- text-align: center;
1622
- line-height: 40px;
1623
- color: #DDD;
1624
- transition-property: color, border-color;
1625
- transition-duration: 0.3s;
1626
- }
1627
- .wpmud .select-list-container {
1628
- position: relative;
1629
- display: block;
1630
- vertical-align: middle;
1631
- padding-right: 45px;
1632
- zoom: 1;
1633
- }
1634
- .wpmud .select-list-container .list-value {
1635
- position: relative;
1636
- display: block;
1637
- overflow: hidden;
1638
- text-overflow: ellipsis;
1639
- background-clip: padding-box;
1640
- text-decoration: none;
1641
- white-space: nowrap;
1642
- line-height: 24px;
1643
- height: auto;
1644
- width: 100%;
1645
- padding: 8px 8px 8px 15px;
1646
- border: 0;
1647
- color: #999;
1648
- font: 500 15px/25px 'Roboto';
1649
- transition-property: color;
1650
- transition-duration: 0.3s;
1651
- }
1652
- .wpmud .select-list-container .list-results {
1653
- position: absolute;
1654
- top: 41px;
1655
- left: -9999px;
1656
- right: -9999px;
1657
- z-index: 1010;
1658
- width: 0;
1659
- border-top: 0;
1660
- background: #FFF;
1661
- border: 1px solid #ddd;
1662
- margin-left: -1px;
1663
- margin-right: -1px;
1664
- margin-top: -2px;
1665
- opacity: 0;
1666
- border-radius: 0 0 4px 4px;
1667
- font: 500 15px/25px 'Roboto';
1668
- transition-property: opacity, border-color;
1669
- transition-duration: 0.3s;
1670
- }
1671
- .wpmud .select-list-container .list-results li {
1672
- padding: 10px 15px;
1673
- background: none;
1674
- color: #777;
1675
- cursor: pointer;
1676
- list-style: none;
1677
- line-height: 15px;
1678
- word-wrap: break-word;
1679
- margin: 0;
1680
- opacity: 0.8;
1681
- transition-property: opacity;
1682
- transition-duration: 0.3s;
1683
- }
1684
- .wpmud .select-list-container .list-results li:last-child {
1685
- border-radius: 0 0 3px 3px;
1686
- }
1687
- .wpmud .select-list-container .list-results li:hover {
1688
- background: #b5e6f8;
1689
- color: #3d464d;
1690
- }
1691
- .wpmud .select-list-container .list-results .current {
1692
- background: #FFF;
1693
- color: #19b4cf;
1694
- }
1695
- .wpmud .select-container:hover {
1696
- border-color: #BBB;
1697
- }
1698
- .wpmud .select-container:hover .list-value {
1699
- color: #3D464D;
1700
- }
1701
- .wpmud .select-container:hover .list-results {
1702
- border-left-color: #BBB;
1703
- border-right-color: #BBB;
1704
- border-bottom-color: #BBB;
1705
- }
1706
- .wpmud .select-container:hover .dropdown-handle {
1707
- border-top-color: #BBB;
1708
- border-right-color: #BBB;
1709
- }
1710
- .wpmud .select-container.active {
1711
- z-index: 99999;
1712
- }
1713
- .wpmud .select-container.active .list-value {
1714
- background: #FCFCFC;
1715
- border-radius: 3px 0 0 0;
1716
- color: #999;
1717
- }
1718
- .wpmud .select-container.active .dropdown-handle {
1719
- border-color: #DDD;
1720
- border-bottom-right-radius: 0;
1721
- }
1722
- .wpmud .select-container.active .list-results {
1723
- left: 0;
1724
- right: 0;
1725
- width: auto;
1726
- opacity: 1;
1727
- transition-duration: 0;
1728
- }
1729
- .wpmud .select-container.active:hover {
1730
- border-color: #DDD;
1731
- }
1732
- .wpmud .select-container.active:hover .list-value {
1733
- color: #999;
1734
- }
1735
- .wpmud .select-container.active:hover .list-results {
1736
- border-color: #BBB;
1737
- }
1738
- .wpmud .select-container.active:hover .list-results li {
1739
- opacity: 1;
1740
- }
1741
- .wpmud .select-container.active:hover .dropdown-handle {
1742
- border-color: #BBB;
1743
- color: #BBB;
1744
- }
1745
- .wpmud .list-table > thead > .select-open th,
1746
- .wpmud .list-table > tfoot > .select-open th,
1747
- .wpmud .list-table > tbody > .select-open td {
1748
- z-index: 9;
1749
- }
1750
-
1751
- /* ****************************************************************************
1752
- * 18. ELEMENT: LISTINGS
1753
- */
1754
- .wpmud .listing li {
1755
- color: #777771;
1756
- line-height: 26px;
1757
- padding: 2px 0 2px 34px;
1758
- position: relative;
1759
- }
1760
- .wpmud .listing.bold li {
1761
- font-weight: bold;
1762
- }
1763
- .wpmud .listing li:before {
1764
- content: "\67";
1765
- color: #0093B1;
1766
- font-size: 22px;
1767
- vertical-align: middle;
1768
- position: absolute;
1769
- left: 0;
1770
- top: 3px;
1771
- width: 22px;
1772
- height: 22px;
1773
- opacity: 0.8;
1774
-
1775
- font-family: 'WPMU-DEV-App-Icons';
1776
- speak: none;
1777
- font-style: normal;
1778
- font-weight: normal;
1779
- font-variant: normal;
1780
- text-transform: none;
1781
- line-height: 1;
1782
- -webkit-font-smoothing: antialiased;
1783
- -moz-osx-font-smoothing: grayscale;
1784
- }
1785
- .wpmud .listing li.circle:before {
1786
- content: "\68";
1787
- }
1788
- .wpmud .listing li.help:before {
1789
- content: "\70";
1790
- }
1791
- .wpmud .listing li.up:before {
1792
- content: "\72";
1793
- }
1794
- .wpmud .listing li.down:before {
1795
- content: "\65";
1796
- }
1797
- .wpmud .listing li.logo:before {
1798
- content: "\30";
1799
- }
1800
- .wpmud .listing li.cross:before {
1801
- content: "\79";
1802
- }
1803
- .wpmud .listing li.tick:before {
1804
- content: "\7a";
1805
- }
1806
- .wpmud .listing li.lock:before {
1807
- content: "\61";
1808
- }
1809
- .wpmud .listing li.unlock:before {
1810
- content: "\63";
1811
- }
1812
- .wpmud .listing li.black:before {
1813
- color: #777771;
1814
- }
1815
- .wpmud .listing li.red:before {
1816
- color: #fd6e70;
1817
- }
1818
- .wpmud .listing li.green:before {
1819
- color: #1ABC9C;
1820
- }
1821
- .wpmud .listing li.yellow:before {
1822
- color: #FDCE43;
1823
- }
1824
-
1825
- /* ****************************************************************************
1826
- * 19. ELEMENT: USER NOTIFICATIONS
1827
- */
1828
- .wpmud .update-notice,
1829
- .wpmud .wpmud-loading-info {
1830
- position: fixed;
1831
- z-index: 999998;
1832
- top: 32px;
1833
- left: 160px;
1834
- right: 0;
1835
- margin: 0;
1836
- padding: 6px 50px;
1837
- text-align: center;
1838
- border-radius: 0;
1839
- text-shadow: 0 1px 1px rgba(0,0,0,0.3);
1840
- box-shadow: 0 4px 7px -3px rgba(0,0,0,0.3);
1841
- }
1842
- .wpmud .update-notice.ok {
1843
- background: #1ABC9C;
1844
- }
1845
- .wpmud .update-notice.err {
1846
- background: #d54e21;
1847
- }
1848
- .wpmud .update-notice p {
1849
- color: #FFF;
1850
- font-weight: 400;
1851
- }
1852
- .wpmud .update-notice .check-animation {
1853
- border-color: #FFF;
1854
- }
1855
- .wpmud .update-notice .wdv-icon {
1856
- position: absolute;
1857
- left: 15px;
1858
- top: 14px;
1859
- color: #FFF;
1860
- font-size: 32px;
1861
- opacity: 0.75;
1862
- }
1863
- .wpmud .update-notice .close {
1864
- position: absolute;
1865
- right: 0;
1866
- top: 0;
1867
- width: 48px;
1868
- height: 48px;
1869
- text-align: center;
1870
- line-height: 48px;
1871
- padding: 0;
1872
- margin: 0;
1873
- color: #FFF;
1874
- cursor: pointer;
1875
- opacity: 0.35;
1876
- transition: opacity 0.3s;
1877
- font-weight: 100;
1878
- font-size: 20px;
1879
- }
1880
- .wpmud .update-notice .close:hover {
1881
- opacity: 1;
1882
- }
1883
- .wpmud .update-notice .extra-text {
1884
- display: block;
1885
- max-height: 100px;
1886
- overflow: auto;
1887
- }
1888
- .wpmud .wpmud-loading-info {
1889
- z-index: 999999;
1890
- padding: 20px 50px;
1891
- background: rgba(255, 255, 255, 0.9);
1892
- }
1893
- .wpmud .wpmud-loading-info p {
1894
- color: #000;
1895
- text-shadow: 0 -1px 1px #FFFFFF;
1896
- }
1897
- .wpmud.folded .update-notice,
1898
- .wpmud.folded .wpmud-loading-info {
1899
- left: 36px;
1900
- }
1901
-
1902
- /* ****************************************************************************
1903
- * 20. ELEMENT: SEARCH BOX
1904
- */
1905
- .wpmud .search-box {
1906
- position: relative;
1907
- text-align: left;
1908
- z-index: 999;
1909
- background: transparent;
1910
- }
1911
- .wpmud .search-box .input-box {
1912
- position: relative;
1913
- width: 360px;
1914
- }
1915
- .wpmud .search-box .input-box input {
1916
- padding: 6px 40px 7px 15px;
1917
- margin: 0;
1918
- }
1919
- .wpmud .search-box .input-box .search-icon {
1920
- position: absolute;
1921
- right: 0;
1922
- top: 0;
1923
- height: 40px;
1924
- width: 40px;
1925
- text-align: center;
1926
- line-height: 40px;
1927
- color: #DDD;
1928
- cursor: pointer;
1929
- background: transparent url(img/spin.gif) 500px 500px no-repeat;
1930
- background-size: 16px;
1931
- transition-property: color;
1932
- transition-duration: 0.3s;
1933
- }
1934
- .wpmud .search-box .input-box:hover .search-icon {
1935
- color: #BBB;
1936
- }
1937
- .wpmud .search-box .input-box .search-icon:hover {
1938
- color: #666;
1939
- }
1940
- .wpmud .search-box.progress .search-icon {
1941
- background-position: center;
1942
- cursor: default;
1943
- }
1944
- .wpmud .search-box.progress .search-icon:before {
1945
- display: none;
1946
- }
1947
- .wpmud .tr > .search-box .input-box {
1948
- margin: 0 0 0 auto;
1949
- }
1950
- .wpmud .search-box .current-item {
1951
- display: none;
1952
- margin: 0 0;
1953
- padding: 8px 44px 8px 44px;
1954
- position: relative;
1955
- height: 40px;
1956
- overflow: hidden;
1957
- white-space: nowrap;
1958
- text-overflow: ellipsis;
1959
- cursor: pointer;
1960
- font: 500 15px/25px 'Roboto';
1961
- margin: 0;
1962
- border: 1px solid #DDD;
1963
- background: #FFF;
1964
- border-radius: 4px;
1965
- box-shadow: none;
1966
- transition-property: border;
1967
- transition-duration: 0.3s;
1968
- }
1969
- .wpmud .search-box .current-item:after {
1970
- content: "\f153";
1971
- position: absolute;
1972
- right: 6px;
1973
- top: 50%;
1974
- margin: -14px 0 0;
1975
- height: 28px;
1976
- width: 28px;
1977
- text-align: center;
1978
- cursor: pointer;
1979
- color: #EEE;
1980
- font: 400 16px/28px 'dashicons';
1981
- transition-property: color;
1982
- transition-duration: 0.3s;
1983
- }
1984
- .wpmud .search-box .search-results {
1985
- display: block;
1986
- position: absolute;
1987
- z-index: 9999;
1988
- margin: 6px 0 30px;
1989
- padding: 0;
1990
- width: 100%;
1991
- box-sizing: content-box;
1992
- background: #fff;
1993
- border: 1px solid rgba(0,0,0,0.12);
1994
- background-clip: padding-box;
1995
- box-shadow: 0 3px 7px rgba(0,0,0,0.12);
1996
- border-radius: 5px;
1997
- max-height: 460px;
1998
- overflow: auto;
1999
- }
2000
- .wpmud .search-box .no-results {
2001
- display: none;
2002
- position: absolute;
2003
- z-index: 9999;
2004
- margin: 6px 0 30px;
2005
- width: 100%;
2006
- background: #fcfcfc;
2007
- border: 1px solid rgba(0,0,0,0.08);
2008
- background-clip: padding-box;
2009
- box-shadow: 0 3px 7px rgba(0,0,0,0.08);
2010
- border-radius: 5px;
2011
- max-height: 460px;
2012
- overflow: auto;
2013
- text-align: center;
2014
- padding: 7px;
2015
- font-style: italic;
2016
- cursor: default;
2017
- color: #999;
2018
- }
2019
- .wpmud .search-box .search-results > ul {
2020
- margin: 0;
2021
- padding: 0;
2022
- list-style: none;
2023
- }
2024
- .wpmud .search-box .search-results > ul > li {
2025
- margin: 0 0;
2026
- padding: 8px 8px 8px 44px;
2027
- position: relative;
2028
- min-height: 40px;
2029
- cursor: pointer;
2030
- border-bottom: 1px solid #eee;
2031
- color: #777771;
2032
- font-size: 13px;
2033
- transition-property: background, color;
2034
- transition-duration: 0.3s;
2035
- }
2036
- .wpmud .search-box .search-results > ul > li:first-child {
2037
- border-top-left-radius: 4px;
2038
- border-top-right-radius: 4px;
2039
- }
2040
- .wpmud .search-box .search-results > ul > li:last-child {
2041
- border-bottom: 0;
2042
- border-bottom-left-radius: 4px;
2043
- border-bottom-right-radius: 4px;
2044
- }
2045
- .wpmud .search-box .search-results > ul > li:hover {
2046
- background-color: #F4F4F4;
2047
- color: #333331;
2048
- }
2049
- .wpmud .search-box .current-item .title,
2050
- .wpmud .search-box .search-results .title {
2051
- color: #0089d7;
2052
- font-size: 15px;
2053
- display: block;
2054
- overflow: hidden;
2055
- text-overflow: ellipsis;
2056
- white-space: nowrap;
2057
- transition-property: color;
2058
- transition-duration: 0.3s;
2059
- }
2060
- .wpmud .search-box .current-item .title {
2061
- color: #999;
2062
- }
2063
- .wpmud .search-box .current-item:hover {
2064
- border-color: #BBB;
2065
- }
2066
- .wpmud .search-box .current-item:hover:after {
2067
- color: #BBB;
2068
- }
2069
- .wpmud .search-box .current-item:hover .title {
2070
- color: #19B4CF;
2071
- }
2072
- .wpmud .search-box .current-item .thumb,
2073
- .wpmud .search-box .search-results .thumb {
2074
- position: absolute;
2075
- left: 8px;
2076
- top: 50%;
2077
- margin: -14px 0 0;
2078
- width: 28px;
2079
- height: 28px;
2080
- background-size: cover;
2081
- background-position: center;
2082
- }
2083
-
2084
- /* ****************************************************************************
2085
- * 21. ELEMENT: COUNT-BADGE
2086
- */
2087
- .wpmud .count {
2088
- display: inline-block;
2089
- text-align: center;
2090
- padding: 2px 10px;
2091
- min-width: 35px;
2092
- position: relative;
2093
- border-radius: 5px;
2094
- border: 2px solid #DDDDDD;
2095
- vertical-align: middle;
2096
- height: 30px;
2097
- line-height: 24px;
2098
- color: #b6b6b6;
2099
- cursor: default;
2100
- font-weight: normal;
2101
- }
2102
- .wpmud .count.reply:before {
2103
- content: '';
2104
- position: absolute;
2105
- bottom: -8px;
2106
- right: 4px;
2107
- border-width: 8px 0px 0px 12px;
2108
- border-style: solid;
2109
- border-color: #DDDDDD transparent;
2110
- display: block;
2111
- width: 0;
2112
- }
2113
- .wpmud .count.reply:after {
2114
- content: '';
2115
- position: absolute;
2116
- bottom: -4px;
2117
- right: 6px;
2118
- border-width: 4px 0px 0px 6px;
2119
- border-style: solid;
2120
- border-color: #fff transparent;
2121
- display: block;
2122
- width: 0;
2123
- }
2124
- .wpmud .count.reply.mirror:before {
2125
- left: 4px;
2126
- border-width: 8px 12px 0px 0px;
2127
- }
2128
- .wpmud .count.reply.mirror:after {
2129
- left: 6px;
2130
- border-width: 4px 6px 0px 0px;
2131
- }
2132
- .wpmud .count.notification {
2133
- background: #fecf2f;
2134
- border-color: #fecf2f;
2135
- color: #fff;
2136
- }
2137
- .wpmud .count.notification:before,
2138
- .wpmud .count.notification:after {
2139
- border-color: #fecf2f transparent;
2140
- }
2141
-
2142
- /* ****************************************************************************
2143
- * 22. ELEMENT: PAGE HEADER
2144
- */
2145
- .wpmud #header {
2146
- margin-bottom: 40px;
2147
- }
2148
- .wpmud #header h1 {
2149
- text-align: left;
2150
- text-transform: uppercase;
2151
- font-size: 32px;
2152
- font-weight: bold;
2153
- max-width: none;
2154
- white-space: nowrap;
2155
- overflow: hidden;
2156
- text-overflow: ellipsis;
2157
- line-height: 40px;
2158
- }
2159
- .wpmud #header .actions {
2160
- float: right;
2161
- }
2162
- .wpmud #header .actions .button + .button {
2163
- margin-left: 2px;
2164
- }
2165
- .wpmud #header .actions .flag {
2166
- position: absolute;
2167
- top: 0;
2168
- background: #CAA;
2169
- color: #fff;
2170
- border-radius: 0;
2171
- margin-left: -41px;
2172
- line-height: 30px;
2173
- height: 40px;
2174
- width: 26px;
2175
- text-align: center;
2176
- font-size: 18px;
2177
- z-index: 1000;
2178
- }
2179
- .wpmud #header .actions .flag:before {
2180
- content: '';
2181
- position: absolute;
2182
- bottom: 0;
2183
- left: 0;
2184
- border: 13px solid transparent;
2185
- border-width: 8px 13px;
2186
- border-bottom-color: #F4F4F4;
2187
- }
2188
- .wpmud #header .actions .flag [tooltip] {
2189
- position: absolute;
2190
- left: 0;
2191
- right: 0;
2192
- top: 0;
2193
- bottom: 5px;
2194
- }
2195
- .wpmud #subheader {
2196
- min-height: 60px;
2197
- margin-top: -34px;
2198
- margin-bottom: 20px;
2199
- }
2200
-
2201
- /* ****************************************************************************
2202
- * 23. FONTAWESOME
2203
- */
2204
- @font-face {
2205
- font-family: 'FontAwesomeWdv';
2206
- src: url('font/fontawesome-webfont.eot');
2207
- src: url('font/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
2208
- url('font/fontawesome-webfont.woff') format('woff'),
2209
- url('font/fontawesome-webfont.ttf') format('truetype'),
2210
- url('font/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),
2211
- url('font/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
2212
- font-weight: normal;
2213
- font-style: normal;
2214
- }
2215
- .wdv-icon:before{font-family:FontAwesomeWdv;font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit}a .wdv-icon{display:inline-block;text-decoration:inherit}.wdv-icon-large:before{vertical-align:top;font-size:1.3333333333333333em}.btn .wdv-icon{line-height:.9em}li .wdv-icon, .action_links .wdv-icon, .wdv-icon.wdv-icon-fw{display:inline-block;width:1.25em;text-align:center}li .wdv-icon-large.wdv-icon,li .wdv-icon-large.wdv-icon{width:1.875em}li.wdv-icon{margin-left:0;list-style-type:none}li.wdv-icon:before{text-indent:-2em;text-align:center}li.wdv-icon.wdv-icon-large:before{text-indent:-1.3333333333333333em}.wdv-icon-glass:before{content:"\f000"}.wdv-icon-music:before{content:"\f001"}.wdv-icon-search:before{content:"\f002"}.wdv-icon-envelope:before{content:"\f003"}.wdv-icon-heart:before{content:"\f004"}.wdv-icon-star:before{content:"\f005"}.wdv-icon-star-empty:before{content:"\f006"}.wdv-icon-user:before{content:"\f007"}.wdv-icon-film:before{content:"\f008"}.wdv-icon-th-large:before{content:"\f009"}.wdv-icon-th:before{content:"\f00a"}.wdv-icon-th-list:before{content:"\f00b"}.wdv-icon-ok:before{content:"\f00c"}.wdv-icon-remove:before{content:"\f00d"}.wdv-icon-zoom-in:before{content:"\f00e"}.wdv-icon-zoom-out:before{content:"\f010"}.wdv-icon-off:before{content:"\f011"}.wdv-icon-signal:before{content:"\f012"}.wdv-icon-cog:before{content:"\f013"}.wdv-icon-trash:before{content:"\f014"}.wdv-icon-home:before{content:"\f015"}.wdv-icon-file:before{content:"\f016"}.wdv-icon-time:before{content:"\f017"}.wdv-icon-road:before{content:"\f018"}.wdv-icon-download-alt:before{content:"\f019"}.wdv-icon-download:before{content:"\f01a"}.wdv-icon-upload:before{content:"\f01b"}.wdv-icon-inbox:before{content:"\f01c"}.wdv-icon-play-circle:before{content:"\f01d"}.wdv-icon-repeat:before{content:"\f01e"}.wdv-icon-refresh:before{content:"\f021"}.wdv-icon-list-alt:before{content:"\f022"}.wdv-icon-lock:before{content:"\f023"}.wdv-icon-flag:before{content:"\f024"}.wdv-icon-headphones:before{content:"\f025"}.wdv-icon-volume-off:before{content:"\f026"}.wdv-icon-volume-down:before{content:"\f027"}.wdv-icon-volume-up:before{content:"\f028"}.wdv-icon-qrcode:before{content:"\f029"}.wdv-icon-barcode:before{content:"\f02a"}.wdv-icon-tag:before{content:"\f02b"}.wdv-icon-tags:before{content:"\f02c"}.wdv-icon-book:before{content:"\f02d"}.wdv-icon-bookmark:before{content:"\f02e"}.wdv-icon-print:before{content:"\f02f"}.wdv-icon-camera:before{content:"\f030"}.wdv-icon-font:before{content:"\f031"}.wdv-icon-bold:before{content:"\f032"}.wdv-icon-italic:before{content:"\f033"}.wdv-icon-text-height:before{content:"\f034"}.wdv-icon-text-width:before{content:"\f035"}.wdv-icon-align-left:before{content:"\f036"}.wdv-icon-align-center:before{content:"\f037"}.wdv-icon-align-right:before{content:"\f038"}.wdv-icon-align-justify:before{content:"\f039"}.wdv-icon-list:before{content:"\f03a"}.wdv-icon-indent-left:before{content:"\f03b"}.wdv-icon-indent-right:before{content:"\f03c"}.wdv-icon-facetime-video:before{content:"\f03d"}.wdv-icon-picture:before{content:"\f03e"}.wdv-icon-pencil:before{content:"\f040"}.wdv-icon-map-marker:before{content:"\f041"}.wdv-icon-adjust:before{content:"\f042"}.wdv-icon-tint:before{content:"\f043"}.wdv-icon-edit:before{content:"\f044"}.wdv-icon-share:before{content:"\f045"}.wdv-icon-check:before{content:"\f046"}.wdv-icon-move:before{content:"\f047"}.wdv-icon-step-backward:before{content:"\f048"}.wdv-icon-fast-backward:before{content:"\f049"}.wdv-icon-backward:before{content:"\f04a"}.wdv-icon-play:before{content:"\f04b"}.wdv-icon-pause:before{content:"\f04c"}.wdv-icon-stop:before{content:"\f04d"}.wdv-icon-forward:before{content:"\f04e"}.wdv-icon-fast-forward:before{content:"\f050"}.wdv-icon-step-forward:before{content:"\f051"}.wdv-icon-eject:before{content:"\f052"}.wdv-icon-chevron-left:before{content:"\f053"}.wdv-icon-chevron-right:before{content:"\f054"}.wdv-icon-plus-sign:before{content:"\f055"}.wdv-icon-minus-sign:before{content:"\f056"}.wdv-icon-remove-sign:before{content:"\f057"}.wdv-icon-ok-sign:before{content:"\f058"}.wdv-icon-question-sign:before{content:"\f059"}.wdv-icon-info-sign:before{content:"\f05a"}.wdv-icon-screenshot:before{content:"\f05b"}.wdv-icon-remove-circle:before{content:"\f05c"}.wdv-icon-ok-circle:before{content:"\f05d"}.wdv-icon-ban-circle:before{content:"\f05e"}.wdv-icon-arrow-left:before{content:"\f060"}.wdv-icon-arrow-right:before{content:"\f061"}.wdv-icon-arrow-up:before{content:"\f062"}.wdv-icon-arrow-down:before{content:"\f063"}.wdv-icon-share-alt:before{content:"\f064"}.wdv-icon-resize-full:before{content:"\f065"}.wdv-icon-resize-small:before{content:"\f066"}.wdv-icon-plus:before{content:"\f067"}.wdv-icon-minus:before{content:"\f068"}.wdv-icon-asterisk:before{content:"\f069"}.wdv-icon-exclamation-sign:before{content:"\f06a"}.wdv-icon-gift:before{content:"\f06b"}.wdv-icon-leaf:before{content:"\f06c"}.wdv-icon-fire:before{content:"\f06d"}.wdv-icon-eye-open:before{content:"\f06e"}.wdv-icon-eye-close:before{content:"\f070"}.wdv-icon-warning-sign:before{content:"\f071"}.wdv-icon-plane:before{content:"\f072"}.wdv-icon-calendar:before{content:"\f073"}.wdv-icon-random:before{content:"\f074"}.wdv-icon-comment:before{content:"\f075"}.wdv-icon-magnet:before{content:"\f076"}.wdv-icon-chevron-up:before{content:"\f077"}.wdv-icon-chevron-down:before{content:"\f078"}.wdv-icon-retweet:before{content:"\f079"}.wdv-icon-shopping-cart:before{content:"\f07a"}.wdv-icon-folder-close:before{content:"\f07b"}.wdv-icon-folder-open:before{content:"\f07c"}.wdv-icon-resize-vertical:before{content:"\f07d"}.wdv-icon-resize-horizontal:before{content:"\f07e"}.wdv-icon-bar-chart:before{content:"\f080"}.wdv-icon-twitter-sign:before{content:"\f081"}.wdv-icon-facebook-sign:before{content:"\f082"}.wdv-icon-camera-retro:before{content:"\f083"}.wdv-icon-key:before{content:"\f084"}.wdv-icon-cogs:before{content:"\f085"}.wdv-icon-comments:before{content:"\f086"}.wdv-icon-thumbs-up:before{content:"\f087"}.wdv-icon-thumbs-down:before{content:"\f088"}.wdv-icon-star-half:before{content:"\f089"}.wdv-icon-heart-empty:before{content:"\f08a"}.wdv-icon-signout:before{content:"\f08b"}.wdv-icon-linkedin-sign:before{content:"\f08c"}.wdv-icon-pushpin:before{content:"\f08d"}.wdv-icon-external-link:before{content:"\f08e"}.wdv-icon-signin:before{content:"\f090"}.wdv-icon-trophy:before{content:"\f091"}.wdv-icon-github-sign:before{content:"\f092"}.wdv-icon-upload-alt:before{content:"\f093"}.wdv-icon-lemon:before{content:"\f094"}.wdv-icon-phone:before{content:"\f095"}.wdv-icon-check-empty:before{content:"\f096"}.wdv-icon-bookmark-empty:before{content:"\f097"}.wdv-icon-phone-sign:before{content:"\f098"}.wdv-icon-twitter:before{content:"\f099"}.wdv-icon-facebook:before{content:"\f09a"}.wdv-icon-github:before{content:"\f09b"}.wdv-icon-unlock:before{content:"\f09c"}.wdv-icon-credit-card:before{content:"\f09d"}.wdv-icon-rss:before{content:"\f09e"}.wdv-icon-hdd:before{content:"\f0a0"}.wdv-icon-bullhorn:before{content:"\f0a1"}.wdv-icon-bell:before{content:"\f0a2"}.wdv-icon-certificate:before{content:"\f0a3"}.wdv-icon-hand-right:before{content:"\f0a4"}.wdv-icon-hand-left:before{content:"\f0a5"}.wdv-icon-hand-up:before{content:"\f0a6"}.wdv-icon-hand-down:before{content:"\f0a7"}.wdv-icon-circle-arrow-left:before{content:"\f0a8"}.wdv-icon-circle-arrow-right:before{content:"\f0a9"}.wdv-icon-circle-arrow-up:before{content:"\f0aa"}.wdv-icon-circle-arrow-down:before{content:"\f0ab"}.wdv-icon-globe:before{content:"\f0ac"}.wdv-icon-wrench:before{content:"\f0ad"}.wdv-icon-tasks:before{content:"\f0ae"}.wdv-icon-filter:before{content:"\f0b0"}.wdv-icon-briefcase:before{content:"\f0b1"}.wdv-icon-fullscreen:before{content:"\f0b2"}.wdv-icon-group:before{content:"\f0c0"}.wdv-icon-link:before{content:"\f0c1"}.wdv-icon-cloud:before{content:"\f0c2"}.wdv-icon-beaker:before{content:"\f0c3"}.wdv-icon-cut:before{content:"\f0c4"}.wdv-icon-copy:before{content:"\f0c5"}.wdv-icon-paper-clip:before{content:"\f0c6"}.wdv-icon-save:before{content:"\f0c7"}.wdv-icon-sign-blank:before{content:"\f0c8"}.wdv-icon-reorder:before{content:"\f0c9"}.wdv-icon-list-ul:before{content:"\f0ca"}.wdv-icon-list-ol:before{content:"\f0cb"}.wdv-icon-strikethrough:before{content:"\f0cc"}.wdv-icon-underline:before{content:"\f0cd"}.wdv-icon-table:before{content:"\f0ce"}.wdv-icon-magic:before{content:"\f0d0"}.wdv-icon-truck:before{content:"\f0d1"}.wdv-icon-pinterest:before{content:"\f0d2"}.wdv-icon-pinterest-sign:before{content:"\f0d3"}.wdv-icon-google-plus-sign:before{content:"\f0d4"}.wdv-icon-google-plus:before{content:"\f0d5"}.wdv-icon-money:before{content:"\f0d6"}.wdv-icon-caret-down:before{content:"\f0d7"}.wdv-icon-caret-up:before{content:"\f0d8"}.wdv-icon-caret-left:before{content:"\f0d9"}.wdv-icon-caret-right:before{content:"\f0da"}.wdv-icon-columns:before{content:"\f0db"}.wdv-icon-sort:before{content:"\f0dc"}.wdv-icon-sort-down:before{content:"\f0dd"}.wdv-icon-sort-up:before{content:"\f0de"}.wdv-icon-envelope-alt:before{content:"\f0e0"}.wdv-icon-linkedin:before{content:"\f0e1"}.wdv-icon-undo:before{content:"\f0e2"}.wdv-icon-legal:before{content:"\f0e3"}.wdv-icon-dashboard:before{content:"\f0e4"}.wdv-icon-comment-alt:before{content:"\f0e5"}.wdv-icon-comments-alt:before{content:"\f0e6"}.wdv-icon-bolt:before{content:"\f0e7"}.wdv-icon-sitemap:before{content:"\f0e8"}.wdv-icon-umbrella:before{content:"\f0e9"}.wdv-icon-paste:before{content:"\f0ea"}.wdv-icon-user-md:before{content:"\f200"}
2216
-
2217
- /* ****************************************************************************
2218
- * 24. WPMUDEV ICONFONT
2219
- */
2220
- @font-face {
2221
- font-family: 'WPMU-DEV-App-Icons';
2222
- src:url('font/WPMU-DEV-App-Icons.eot?yhrhds');
2223
- src:url('font/WPMU-DEV-App-Icons.eot?#iefixyhrhds') format('embedded-opentype'),
2224
- url('font/WPMU-DEV-App-Icons.ttf?yhrhds') format('truetype'),
2225
- url('font/WPMU-DEV-App-Icons.woff?yhrhds') format('woff'),
2226
- url('font/WPMU-DEV-App-Icons.svg?yhrhds#WPMU-DEV-App-Icons') format('svg');
2227
- font-weight: normal;
2228
- font-style: normal;
2229
- }
2230
- .dev-icon {
2231
- font-family: 'WPMU-DEV-App-Icons';
2232
- speak: none;
2233
- font-style: normal;
2234
- font-weight: normal;
2235
- font-variant: normal;
2236
- text-transform: none;
2237
- line-height: 1;
2238
- font-size: 14px;
2239
- -webkit-font-smoothing: antialiased;
2240
- -moz-osx-font-smoothing: grayscale;
2241
- }
2242
- .dev-icon-comment:before {
2243
- content: "\41";
2244
- }
2245
- .dev-icon-speach:before {
2246
- content: "\6d";
2247
- }
2248
- .dev-icon-speach_alt:before {
2249
- content: "\3d";
2250
- }
2251
- .dev-icon-download:before {
2252
- content: "\42";
2253
- }
2254
- .dev-icon-download_alt:before {
2255
- content: "\69";
2256
- }
2257
- .dev-icon-upload:before {
2258
- content: "\56";
2259
- }
2260
- .dev-icon-error:before {
2261
- content: "\45";
2262
- }
2263
- .dev-icon-archive:before {
2264
- content: "\4f";
2265
- }
2266
- .dev-icon-logo:before {
2267
- content: "\39";
2268
- }
2269
- .dev-icon-logo_alt:before {
2270
- content: "\30";
2271
- }
2272
- .dev-icon-wordpress:before {
2273
- content: "\47";
2274
- }
2275
- .dev-icon-facebook:before {
2276
- content: "\46";
2277
- }
2278
- .dev-icon-twitter:before {
2279
- content: "\49";
2280
- }
2281
- .dev-icon-github:before {
2282
- content: "\4a";
2283
- }
2284
- .dev-icon-stackoverflow:before {
2285
- content: "\4b";
2286
- }
2287
- .dev-icon-linkedin:before {
2288
- content: "\4c";
2289
- }
2290
- .dev-icon-medium:before {
2291
- content: "\4d";
2292
- }
2293
- .dev-icon-quora:before {
2294
- content: "\51";
2295
- }
2296
- .dev-icon-seo:before {
2297
- content: "\53";
2298
- }
2299
- .dev-icon-minify:before {
2300
- content: "\4e";
2301
- }
2302
- .dev-icon-uptime:before {
2303
- content: "\55";
2304
- }
2305
- .dev-icon-world:before {
2306
- content: "\57";
2307
- }
2308
- .dev-icon-pos_footer:before {
2309
- content: "\59";
2310
- }
2311
- .dev-icon-pos_middle:before {
2312
- content: "\58";
2313
- }
2314
- .dev-icon-pos_header:before {
2315
- content: "\43";
2316
- }
2317
- .dev-icon-book:before {
2318
- content: "\62";
2319
- }
2320
- .dev-icon-support:before {
2321
- content: "\6e";
2322
- }
2323
- .dev-icon-rocket:before {
2324
- content: "\6a";
2325
- }
2326
- .dev-icon-rocket_alt:before {
2327
- content: "\76";
2328
- }
2329
- .dev-icon-lock:before {
2330
- content: "\61";
2331
- }
2332
- .dev-icon-unlock:before {
2333
- content: "\63";
2334
- }
2335
- .dev-icon-plugin:before {
2336
- content: "\64";
2337
- }
2338
- .dev-icon-caret_up:before {
2339
- content: "\72";
2340
- }
2341
- .dev-icon-caret_right:before {
2342
- content: "\33";
2343
- }
2344
- .dev-icon-caret_down:before {
2345
- content: "\65";
2346
- }
2347
- .dev-icon-caret_left:before {
2348
- content: "\7c";
2349
- }
2350
- .dev-icon-power:before {
2351
- content: "\66";
2352
- }
2353
- .dev-icon-radio_default:before {
2354
- content: "\68";
2355
- }
2356
- .dev-icon-radio:before {
2357
- content: "\68";
2358
- }
2359
- .dev-icon-radio_checked:before {
2360
- content: "\67";
2361
- }
2362
- .dev-icon-cross:before {
2363
- content: "\79";
2364
- }
2365
- .dev-icon-tick:before {
2366
- content: "\7a";
2367
- }
2368
- .dev-icon-search:before {
2369
- content: "\6b";
2370
- }
2371
- .dev-icon-info:before {
2372
- content: "\70";
2373
- }
2374
- .dev-icon-devman:before {
2375
- content: "\31";
2376
- }
2377
- .dev-icon-upfront:before {
2378
- content: "\37";
2379
- }
2380
- .dev-icon-hummingbird:before {
2381
- content: "\48";
2382
- }
2383
- .dev-icon-defender:before {
2384
- content: "\44";
2385
- }
2386
- .dev-icon-theme:before {
2387
- content: "\6c";
2388
- }
2389
- .dev-icon-pencil:before {
2390
- content: "\50";
2391
- }
2392
- .dev-icon-star:before {
2393
- content: "\5a";
2394
- }
2395
- .dev-icon-trash:before {
2396
- content: "\54";
2397
- }
2398
- .dev-icon-recycle:before {
2399
- content: "\52";
2400
- }
2401
- .dev-icon-fix:before {
2402
- content: "\32";
2403
- }
2404
- .dev-icon-edit:before {
2405
- content: "\6f";
2406
- }
2407
- .dev-icon-options:before {
2408
- content: "\73";
2409
- }
2410
- .dev-icon-cog:before {
2411
- content: "\74";
2412
- }
2413
- .dev-icon-badge:before {
2414
- content: "\71";
2415
- }
2416
- .dev-icon-cylinder:before {
2417
- content: "\75";
2418
- }
2419
- .dev-icon-trophy:before {
2420
- content: "\78";
2421
- }
2422
- .dev-icon-bell:before {
2423
- content: "\77";
2424
- }
2425
-
2426
- /* ****************************************************************************
2427
- * 25. CUSTOM ANIMATIONS
2428
- */
2429
- @keyframes fade-in {
2430
- 0% { opacity: 0; }
2431
- 90% { opacity: 1; }
2432
- 100% { opacity: 1; }
2433
- }
2434
- @keyframes bounce-in {
2435
- 0% { transform: translateY(-200%) scale(1.5); opacity:0; }
2436
- 30% { opacity:1; }
2437
- 58% { transform: translateY(0) rotate(1deg) scale(1); opacity: 1 }
2438
- 72% { transform: translateY(-30px) rotate(-1deg); }
2439
- 80% { transform: translateY(0) rotate(0.5deg); }
2440
- 100% { transform: translateY(0) rotate(0deg); }
2441
- }
2442
- @keyframes bounce-out {
2443
- 0% { transform: translateY(0); }
2444
- 10% { transform: translateY(-10px) rotate(-0.5deg); }
2445
- 30% { transform: translateY(20px) rotate(8deg); }
2446
- 70% { opacity: 1; }
2447
- 90% { transform: translateY(300%) translateX(40px) rotate(35deg); opacity: 0; }
2448
- 100% { display: none; }
2449
- }
2450
- @keyframes check {
2451
- 0% { height: 0; width: 0; opacity: 0; }
2452
- 24.9% { opacity: 0; }
2453
- 25% { height: 0; width: 0; opacity: 1; }
2454
- 35% { height: 0; width: 10px; }
2455
- 50% { height: 20px; width: 10px; }
2456
- }
2457
- @keyframes spin {
2458
- 100% { transform:rotate(360deg); }
2459
- }
2460
- @keyframes collapse {
2461
- 0% { opacity: 1; transform: scale(1); }
2462
- 40% { opacity: 1; transform: translateY(0); }
2463
- 90% { opacity: 0; height: 0; }
2464
- 100% { transform: scale(1); transform: translateY(-30px) scale(0.9); }
2465
- }
2466
- .wpmud .check-animation {
2467
- transform: scaleX(-1) rotate(135deg);
2468
- transform-origin: left top;
2469
- border-right: 4px solid #cee;
2470
- border-top: 4px solid #cee;
2471
- display: block;
2472
- height: 20px;
2473
- left: 14px;
2474
- position: absolute;
2475
- top: 26px;
2476
- width: 10px;
2477
- animation: check 3s;
2478
- border-color: #6aa;
2479
- }
2480
- .wpmud .fade-in {
2481
- animation: fade-in 0.5s ease-in;
2482
- }
2483
- .wpmud .fade-out {
2484
- transition: opacity 0.5s ease-in-out;
2485
- opacity: 0;
2486
- }
2487
- .wpmud .bounce-in {
2488
- animation: bounce-in 0.8s ease-in;
2489
- }
2490
- .wpmud .bounce-out {
2491
- animation: bounce-out 0.6s ease-out;
2492
- }
2493
- .wpmud .spin {
2494
- animation: spin 1s linear infinite;
2495
- }
2496
- .wpmud .animated.collapse {
2497
- overflow: hidden;
2498
- animation: collapse 0.5s linear;
2499
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/shared-ui/wdev-ui.js DELETED
@@ -1,1203 +0,0 @@
1
- /**
2
- * JS used for UI of WPMUDEV plugins.
3
- */
4
-
5
- /*
6
- * Initialize the Dashboard once the page is fully loaded.
7
- */
8
- jQuery(function() {
9
- // Small layout fix (changes the global background color).
10
- jQuery("html").addClass("wpmud-html");
11
-
12
- // Add event handlers to show overlay dialogs.
13
- jQuery(".wpmud").on("click", "a[rel=dialog]", showDialog);
14
-
15
- // Open any auto-show overlays.
16
- jQuery("dialog.auto-show").first().each(showDialog);
17
-
18
- // Select code content on click.
19
- jQuery(".wpmud").on("click", "code, pre, .sel-all", selectOnClick);
20
-
21
- // Disable the one-time-click buttons on first click.
22
- jQuery(".wpmud").on("click", ".one-click", disableOnClick);
23
-
24
- // Start animation when clicking on spinner-icons.
25
- jQuery(".wpmud").on("click", ".has-spinner", spinOnClick);
26
-
27
- // Make Ajax-submit buttons behave as Ajax-submit buttons.
28
- jQuery(".wpmud").on("click", ".as-ajax", ajaxSubmitLink);
29
-
30
- // Handle close buttons inside boxes.
31
- jQuery(".wpmud").on("click", ".can-close .close", closeElement);
32
-
33
- // Initialize all tab-areas.
34
- jQuery(".wpmud .tabs").each(function(){
35
- WDP.wpmuTabs(this);
36
- });
37
-
38
- // Initialize all vertical tab-areas.
39
- jQuery(".wpmud .vertical-tabs").each(function(){
40
- WDP.wpmuVerticalTabs(this);
41
- });
42
-
43
- // Convert all select lists to fancy WPMU Select lists.
44
- jQuery(".wpmud select").each(function(){
45
- WDP.wpmuSelect(this);
46
- });
47
-
48
- // Convert all all search-fields to WPMU search areas.
49
- jQuery(".wpmud input[type=search]").each(function(){
50
- WDP.wpmuSearchfield(this);
51
- });
52
-
53
- // Check the page URL for special actions
54
- checkLocalRoutes();
55
-
56
- // Add new jQuery function jQuery().loading(true|false)
57
- jQuery.fn.extend({
58
- loading: function(state, message) {
59
- if (undefined === state) { state = true; }
60
- this.each(function() {
61
- if (state) {
62
- jQuery(this).addClass("loading");
63
- } else {
64
- jQuery(this).removeClass("loading");
65
- }
66
- });
67
- if (state && message) {
68
- jQuery(".wpmud-loading-info").remove();
69
- message = "<p><span class='loading'></span> " + message + "</p>";
70
- jQuery("<div></div>")
71
- .addClass("wpmud-loading-info")
72
- .appendTo("body")
73
- .html(message);
74
- } else if (!state) {
75
- jQuery(".wpmud-loading-info").remove();
76
- }
77
- return this;
78
- }
79
- });
80
-
81
- // When a rel=dialog element was clicked we find and open the target dialog.
82
- function showDialog(ev) {
83
- var el = jQuery(this);
84
- var args = {};
85
-
86
- if (el.data("width")) { args.width = el.data("width"); }
87
- if (el.data("height")) { args.height = el.data("height"); }
88
- if (el.data("class")) { args.class = el.data("class"); }
89
- if (el.data("title")) { args.title = el.data("title"); }
90
-
91
- if (el.is("dialog")) {
92
- WDP.showOverlay("#" + el.attr("id"), args);
93
- } else if (el.attr("href")) {
94
- WDP.showOverlay(el.attr("href"), args);
95
- }
96
- return false;
97
- }
98
-
99
- // Select all text inside the element.
100
- function selectOnClick(ev) {
101
- WDP.selectText(this);
102
- }
103
-
104
- // Disable the element on click.
105
- function disableOnClick(ev) {
106
- var form, el = jQuery(this);
107
-
108
- window.setTimeout(function() {
109
- el.prop("disabled", true).addClass("disabled").loading(true);
110
-
111
- if (el.hasClass("button")) {
112
- form = el.closest("form");
113
- if ( form.length ) {
114
- form.find(":input").prop("disabled", true).addClass("disabled");
115
- form.prop("disabled", true).addClass("disabled");
116
- }
117
- }
118
- }, 20);
119
- }
120
-
121
- // Start animating the element on click.
122
- function spinOnClick(ev) {
123
- var icon, el = jQuery(this);
124
- if (el.hasClass("spin-on-click")) { icon = el; }
125
- else { icon = el.find(".spin-on-click"); }
126
- icon.addClass("spin");
127
- }
128
-
129
- // Submit a link as ajax request instead of refreshing the window.
130
- function ajaxSubmitLink(ev) {
131
- var el = jQuery(this),
132
- url = el.attr("href");
133
-
134
- if (! url) { return false; }
135
-
136
- el.addClass("loading disabled").prop("disabled", true);
137
- jQuery.post(url)
138
- .always(function() {
139
- el.removeClass("loading disabled").prop("disabled", false);
140
- }).fail(function() {
141
- WDP.showError({"message": false});
142
- });
143
-
144
- return false;
145
- }
146
-
147
- // Parses the hash-tag in the current address bar.
148
- function checkLocalRoutes() {
149
- var route = window.location.hash.substr(1)
150
- parts = route.split("=");
151
-
152
- WDP.localRoutes = {
153
- "action": false,
154
- "param": false
155
- };
156
- if (! route.length ) { return; }
157
-
158
- WDP.localRoutes.action = parts[0];
159
- if (parts.length > 1) {
160
- WDP.localRoutes.param = parts[1];
161
- }
162
- }
163
-
164
- // Closes an element (i.e. hides and removes it)
165
- function closeElement() {
166
- var box = jQuery(this).closest(".can-close");
167
-
168
- box.css({height: box.outerHeight() });
169
- box.addClass("animated collapse");
170
-
171
- function removeElementBox() {
172
- box.remove();
173
- }
174
-
175
- window.setTimeout(removeElementBox, 450);
176
- }
177
- });
178
-
179
- /*
180
- * Define Dashboard namespace with all the functions.
181
- * WDP = WPMUDEV Dashboard Plugin
182
- */
183
- window.WDP = window.WDP || {};
184
-
185
- /**
186
- * Display a modal overlay on the screen.
187
- * Only one overlay can be displayed at once.
188
- *
189
- * The dialog source must be (or contain) an <dialog> element.
190
- * Only the <dialog> element is parsed and displayed in the overlay.
191
- *
192
- * @since 4.0.0
193
- * @param string dialogSource Either CSS class/ID, URL or HTML string.
194
- * - ID must start with a hash '#'.
195
- * - Class must start with a dot '.'.
196
- * - URL contains '://' (absolute URL).
197
- * - URL starts with slash '/' (relative URL).
198
- * - Everything else is considered HTML string.
199
- * @param array args Optional arguments, like callbacks
200
- * @var callback onShow
201
- * @var int width (only for iframes)
202
- * @var int height (only for iframes)
203
- * @var string class
204
- * @var string title
205
- */
206
- WDP.showOverlay = function(dialogSource, args) {
207
- var retry = false;
208
-
209
- if ('object' !== typeof args) { args = {}; }
210
- args.onShow = args.onShow || false;
211
-
212
- // 1.) fetch the dialog code from the appropriate source.
213
- if ('#' === dialogSource[0] || '.' === dialogSource[0]) {
214
- /*
215
- * Type 1: CSS selector
216
- * The page contains a <dialog> element that is instantly displayed.
217
- */
218
- var dialog = jQuery('dialog' + dialogSource);
219
- showTheDialog(dialog);
220
- } else if (-1 !== dialogSource.indexOf('://') || '/' === dialogSource[0]) {
221
- var type;
222
- if ('/' === dialogSource[0]) { type = 'ajax'; }
223
- else if (0 === dialogSource.indexOf(WDP.data.site_url)) { type = 'ajax'; }
224
- else { type = 'iframe'; }
225
-
226
- if ('ajax' === type) {
227
- /*
228
- * Type 2a: AJAX handler
229
- * The URL is relative or starts with the WordPress site_url. The
230
- * URL is called as ajax handler. Result can be either HTML code or
231
- * a JSON object with attributes `obj.success` and `obj.data.html`
232
- * In either case, the returned HTML needs to contain a <dialog> tag
233
- */
234
- jQuery.get(
235
- dialogSource,
236
- '',
237
- function(resp) {
238
- var el;
239
- if ('{' === resp[0]) { resp = jQuery.parseJSON(resp); }
240
- if ('object' === typeof resp) {
241
- if (resp && resp.success && resp.data.html) {
242
- el = jQuery(resp.data.html);
243
- }
244
- } else {
245
- el = jQuery(resp);
246
- }
247
-
248
- if (!el || !el.length) { return; }
249
- if (el.is('dialog')) { showTheDialog(el); }
250
- else { showTheDialog(el.find('dialog')); }
251
- }
252
- );
253
- } else if ('iframe' === type) {
254
- /*
255
- * Type 2b: iframe container
256
- * An external URL is loaded inside an iframe which is displayed
257
- * inside the dialog. The external URL may return any content.
258
- */
259
- var iframe = jQuery('<div><iframe class="fullsize"></iframe></div>');
260
- iframe.find('iframe').attr('src', dialogSource);
261
- if (args.width) { iframe.find('iframe').attr('width', args.width); }
262
- if (args.height) { iframe.find('iframe').attr('height', args.height); }
263
- showTheDialog(iframe);
264
- }
265
- } else {
266
- /*
267
- * Type 3: Plain HTML code
268
- * The dialog source is plain HTML code that is parsed and displayed;
269
- * the code needs to contain an <dialog> element.
270
- */
271
- var el = jQuery(dialogSource);
272
- if (el.is('dialog')) { showTheDialog(el); }
273
- else { showTheDialog(el.find('dialog')); }
274
- }
275
-
276
- // 2.) Render the dialog.
277
- function showTheDialog(dialog) {
278
- if ( ! dialog.length ) { return; }
279
- if ( ! WDP.prepareOverlay() ) {
280
- if ( ! retry ) {
281
- retry = true;
282
- WDP.closeOverlay();
283
- window.setTimeout(function() { showTheDialog(dialog); }, 610);
284
- }
285
- return;
286
- }
287
-
288
- if (! args.title) {
289
- args.title = dialog.attr('title');
290
- }
291
- if (args.class) {
292
- dialog.addClass(args.class);
293
- }
294
-
295
- WDP.overlay.box_title.find('h3').html(args.title);
296
- WDP.overlay.box_content.html(dialog.html());
297
-
298
- WDP.overlay.wrapper.addClass(dialog.attr('class'));
299
- if (dialog.hasClass('no-close')) {
300
- WDP.overlay.wrapper.addClass('no-close');
301
- WDP.overlay.close.remove();
302
- }
303
- if (dialog.find('.title-action').length) {
304
- WDP.overlay.box_content.find('.title-action').appendTo(WDP.overlay.box_title);
305
- }
306
-
307
- WDP.overlay.box_content.on('click', '.close', WDP.closeOverlay);
308
- jQuery(window).on('resize', WDP.positionOverlay);
309
-
310
- WDP.overlay.container.addClass('has-overlay');
311
- WDP.overlay.wrapper.show();
312
- WDP.overlay.box.addClass('bounce-in');
313
- WDP.overlay.back.addClass('fade-in');
314
- WDP.overlay.visible = true;
315
-
316
- WDP.positionOverlay();
317
-
318
- window.setTimeout(function(){
319
- WDP.overlay.box.removeClass('bounce-in');
320
- WDP.overlay.back.removeClass('fade-in');
321
- }, 1000);
322
-
323
- if ('function' === typeof args.onShow) { args.onShow(); }
324
- }
325
-
326
- return WDP;
327
- };
328
-
329
- /**
330
- * Closes the current modal overlay again.
331
- *
332
- * @since 4.0.0
333
- */
334
- WDP.closeOverlay = function() {
335
- if ( WDP.prepareOverlay() ) { return WDP; }
336
-
337
- WDP.overlay.container.removeClass('has-overlay');
338
- WDP.overlay.box.addClass('bounce-out');
339
- WDP.overlay.back.addClass('fade-out');
340
- jQuery(window).off('resize', WDP.positionOverlay);
341
-
342
- window.setTimeout(function() {
343
- WDP.overlay.wrapper.hide()
344
- }, 550);
345
- window.setTimeout(function() {
346
- WDP.overlay.wrapper.remove();
347
- WDP.overlay.wrapper = null;
348
- WDP.overlay.visible = false;
349
- }, 600);
350
-
351
- return WDP;
352
- };
353
-
354
- /**
355
- * Updates the position of the overlay to keep it vertically centered on the
356
- * screen.
357
- *
358
- * @since 4.0.0
359
- */
360
- WDP.positionOverlay = function() {
361
- var availHeight, needHeight, newOffset;
362
-
363
- if ( WDP.prepareOverlay() ) { return WDP; }
364
-
365
- availHeight = WDP.overlay.scroll.height();
366
- needHeight = WDP.overlay.box.outerHeight();
367
- newOffset = (availHeight - needHeight) / 2;
368
-
369
- if ( newOffset < 20 ) { newOffset = 20; }
370
- WDP.overlay.box.css({ marginTop: newOffset });
371
-
372
- return WDP;
373
- };
374
-
375
- /**
376
- * Creates all the DOM elements needed to display the overlay element.
377
- *
378
- * @since 4.0.0
379
- * @return bool True if the modal is ready to be displayed.
380
- */
381
- WDP.prepareOverlay = function() {
382
- var offset = jQuery('#wpcontent').offset();
383
-
384
- WDP.overlay = WDP.overlay || {};
385
-
386
- if ( WDP.overlay.visible ) { return false; }
387
-
388
- if ( ! WDP.overlay.wrapper ) {
389
- WDP.overlay.container = jQuery('.wpmud-html');
390
- WDP.overlay.wrapper = jQuery('<div class="dev-overlay"></div>');
391
- WDP.overlay.back = jQuery('<div class="back"></div>');
392
- WDP.overlay.scroll = jQuery('<div class="box-scroll"></div>');
393
- WDP.overlay.box = jQuery('<div class="box"></div>');
394
- WDP.overlay.box_title = jQuery('<div class="title"><h3></h3></div>');
395
- WDP.overlay.box_content = jQuery('<div class="content"></div>');
396
- WDP.overlay.close = jQuery('<div class="close">&times;</div>');
397
-
398
- WDP.overlay.back.appendTo(WDP.overlay.wrapper);
399
- WDP.overlay.scroll.appendTo(WDP.overlay.wrapper);
400
- WDP.overlay.box.appendTo(WDP.overlay.scroll);
401
- WDP.overlay.box_title.appendTo(WDP.overlay.box);
402
- WDP.overlay.box_content.appendTo(WDP.overlay.box);
403
- WDP.overlay.close.appendTo(WDP.overlay.box_title);
404
- WDP.overlay.wrapper.appendTo('body');
405
-
406
- WDP.overlay.close.click(WDP.closeOverlay);
407
- }
408
-
409
- return true;
410
- };
411
-
412
- /**
413
- * Select all text inside the HTML element. This can be a div/code/input/etc.
414
- *
415
- * @since 4.0.0
416
- * @param object el The HTML element.
417
- */
418
- WDP.selectText = function(el) {
419
- var range, jq;
420
- jq = jQuery( el );
421
- el = jq[0];
422
-
423
- if ( jq.is(':input') ) {
424
- jq.focus().select();
425
- } else if ( document.selection ) {
426
- range = document.body.createTextRange();
427
- range.moveToElementText(el);
428
- range.select();
429
- } else if ( window.getSelection ) {
430
- range = document.createRange();
431
- range.selectNode(el);
432
- window.getSelection().addRange(range);
433
- }
434
-
435
- return WDP;
436
- };
437
-
438
- /**
439
- * Initialize the functions of a tab-area
440
- *
441
- * @since 4.0.0
442
- * @param object el The tab-area container element.
443
- */
444
- WDP.wpmuTabs = function(el) {
445
- var jq = jQuery(el).closest('.tabs');
446
-
447
- if (! jq.length) { return; }
448
-
449
- // Resize the tab-area after short delay.
450
- function resizeArea() {
451
- window.setTimeout(resizeAreaHandler, 20);
452
- }
453
-
454
- // Resize the tab area to match the current tab.
455
- function resizeAreaHandler() {
456
- var current = jq.find('.tab > input:checked').parent(),
457
- content = current.find('.content');
458
-
459
- jq.height(content.outerHeight() + current.outerHeight() - 6);
460
- }
461
-
462
- // Updates the URL hash to keep tab open during page refresh
463
- function updateHash() {
464
- var current = jq.find('.tab > input:checked');
465
-
466
- if (current.attr('id').length) {
467
- WDP.updateHash(current.attr('id'));
468
- }
469
- resizeArea();
470
- }
471
-
472
- // Open the tab that is specified in window URL hash
473
- function switchTab() {
474
- var curTab,
475
- route = window.location.hash.replace( /[^\w-_]/g, '' );
476
-
477
- if (route) {
478
- curTab = jq.find('input#' + route);
479
-
480
- if (curTab.length && ! curTab.prop('checked')) {
481
- curTab.prop('checked', true);
482
- scrollWindow();
483
- }
484
- }
485
- }
486
-
487
- // Scroll the window to top of the tab list.
488
- function scrollWindow() {
489
- resizeArea();
490
- jQuery('html, body').scrollTop(
491
- jq.offset().top
492
- - parseInt( jQuery('html').css('paddingTop') )
493
- - 20
494
- );
495
- }
496
-
497
- // Constructor.
498
- function init() {
499
- jq.on('click', '.tab > input[type=radio]', updateHash);
500
- jQuery(window).on('hashchange', switchTab);
501
-
502
- resizeArea();
503
- switchTab();
504
- }
505
-
506
- init();
507
-
508
- return WDP;
509
- };
510
-
511
- /**
512
- * Initialize the functions of a vertical tab-area
513
- *
514
- * @since 4.0.0
515
- * @param object el The tab-area container element.
516
- */
517
- WDP.wpmuVerticalTabs = function(el) {
518
- var jq = jQuery(el).closest('.vertical-tabs'),
519
- minHeight = 0;
520
-
521
- if (! jq.length) { return; }
522
-
523
- // Resize the tab-area after short delay.
524
- function resizeArea() {
525
- window.setTimeout(resizeAreaHandler, 20);
526
- }
527
-
528
- // Resize the tab area to match the current tab.
529
- function resizeAreaHandler() {
530
- var current = jq.find('.tab > input:checked').parent(),
531
- content = current.find('.content'),
532
- newHeight = content.outerHeight();
533
-
534
- if (newHeight < minHeight) { newHeight = minHeight; }
535
- content.css({'min-height': minHeight});
536
- jq.height(newHeight);
537
- }
538
-
539
- // Find the height of the tab labels
540
- function calcMinHeight() {
541
- minHeight = 0;
542
- jq.find('.tab > label:visible').each(function() {
543
- minHeight += jQuery(this).outerHeight();
544
- });
545
- }
546
-
547
- // Updates the URL hash to keep tab open during page refresh
548
- function updateHash() {
549
- var current = jq.find('.tab > input:checked');
550
-
551
- if (current.attr('id').length) {
552
- WDP.updateHash(current.attr('id'));
553
- }
554
- resizeArea();
555
- }
556
-
557
- // Open the tab that is specified in window URL hash
558
- function switchTab() {
559
- var curTab,
560
- route = window.location.hash.replace( /[^\w-_]/g, '' );
561
-
562
- if (route) {
563
- curTab = jq.find('input#' + route);
564
-
565
- if (curTab.length && ! curTab.prop('checked')) {
566
- curTab.prop('checked', true);
567
- scrollWindow();
568
- }
569
- }
570
- }
571
-
572
- // Scroll the window to top of the tab list.
573
- function scrollWindow() {
574
- resizeArea();
575
- jQuery('html, body').scrollTop(
576
- jq.offset().top
577
- - parseInt( jQuery('html').css('paddingTop') )
578
- - 20
579
- );
580
- }
581
-
582
- // Constructor.
583
- function init() {
584
- jq.on('click', '.tab > input[type=radio]', updateHash);
585
- jQuery(window).on('resize', calcMinHeight);
586
- jQuery(window).on('hashchange', switchTab);
587
-
588
- calcMinHeight();
589
- resizeArea();
590
- switchTab();
591
- }
592
-
593
- init();
594
-
595
- return WDP;
596
- };
597
-
598
- /**
599
- * Update a normal select list to a fancy WPMU DEV select list!
600
- *
601
- * @since 4.0.0
602
- * @param object el The select element.
603
- */
604
- WDP.wpmuSelect = function(el) {
605
- var jq = jQuery(el),
606
- wrap, handle, list, value, items;
607
-
608
- if (! jq.is("select")) { return; }
609
- if (jq.closest(".select-container").length) { return; }
610
-
611
- // Add the DOM elements to style the select list.
612
- function setupElement() {
613
- jq.wrap("<div class='select-container'>");
614
- jq.hide();
615
-
616
- wrap = jq.parent();
617
- handle = jQuery("<span class='dropdown-handle'><i class='wdv-icon wdv-icon-reorder'></i></span>").prependTo(wrap);
618
- list = jQuery("<div class='select-list-container'></div>").appendTo(wrap);
619
- value = jQuery("<div class='list-value'>&nbsp;</div>").appendTo(list);
620
- items = jQuery("<ul class='list-results'></ul>").appendTo(list);
621
-
622
- wrap.addClass(jq.attr("class"));
623
- }
624
-
625
- // Add all the options to the new DOM elements.
626
- function populateList() {
627
- items.empty();
628
- jq.find("option").each(function onPopulateLoop() {
629
- var opt = jQuery(this),
630
- item;
631
- item = jQuery("<li></li>").appendTo(items);
632
- item.text(opt.text());
633
- item.data("value", opt.val());
634
-
635
- if (opt.val() == jq.val()) {
636
- selectItem(item);
637
- }
638
- });
639
- }
640
-
641
- // Toggle the dropdown state between open/closed.
642
- function stateToggle() {
643
- if (! wrap.hasClass("active")) {
644
- stateOpen();
645
- } else {
646
- stateClose();
647
- }
648
- }
649
-
650
- // Close the dropdown list.
651
- function stateClose(item) {
652
- if (!item) { item = wrap; }
653
- item.removeClass("active");
654
- item.closest("tr").removeClass("select-open");
655
- }
656
-
657
- // Open the dropdown list.
658
- function stateOpen() {
659
- jQuery(".select-container.active").each(function() {
660
- stateClose(jQuery(this));
661
- });
662
- wrap.addClass("active");
663
- wrap.closest("tr").addClass("select-open");
664
- }
665
-
666
- // Visually mark the specified option as "selected".
667
- function selectItem(opt) {
668
- value.text(opt.text());
669
-
670
- jQuery(".current", items).removeClass("current");
671
- opt.addClass("current");
672
- stateClose();
673
-
674
- // Also update the select list value.
675
- jq.val(opt.data("value"));
676
- jq.trigger("change");
677
- }
678
-
679
- // Element constructor.
680
- function init() {
681
- var sel_id;
682
-
683
- setupElement();
684
- populateList();
685
- items.on("click", function onItemClick(ev) {
686
- var opt = jQuery(ev.target);
687
- selectItem(opt);
688
- });
689
-
690
- handle.on("click", stateToggle);
691
- value.on("click", stateToggle);
692
- jq.on("focus", stateOpen);
693
-
694
- jQuery(document).click(function onOutsideClick(ev) {
695
- var jq = jQuery(ev.target),
696
- sel_id;
697
-
698
- if (jq.closest(".select-container").length) { return; }
699
- if (jq.is("label") && jq.attr("for")) {
700
- sel_id = jq.attr("for");
701
- if (jQuery("select#" + sel_id).length) { return; }
702
- }
703
-
704
- stateClose();
705
- });
706
-
707
- sel_id = jq.attr("id");
708
- if (sel_id) {
709
- jQuery("label[for=" + sel_id + "]").on("click", stateOpen);
710
- }
711
- }
712
-
713
- init();
714
-
715
- return WDP;
716
- };
717
-
718
- /**
719
- * Initialize the search-areas.
720
- *
721
- * @since 4.0.0
722
- * @param object el The search input element.
723
- */
724
- WDP.wpmuSearchfield = function(el) {
725
- var jq = jQuery(el),
726
- tmrDelay = 0,
727
- lastVal = '',
728
- tmrHide = false,
729
- hasResults = false,
730
- search, wrap, inpbox, emptyMsg, emptybox, resbox, reslist, curitem;
731
-
732
- if (! jq.is('input[type="search"]')) { return; }
733
-
734
- // Add the DOM elements to style the select list.
735
- function setupElement() {
736
- var classes = jq.attr('class');
737
-
738
- jq.prop('autocomplete', 'off');
739
- jq.wrap('<div class="search-box">');
740
- wrap = jq.parent();
741
-
742
- if ( classes ) {
743
- wrap.addClass(classes);
744
- }
745
-
746
- jq.wrap('<div class="input-box">');
747
- inpbox = jq.parent();
748
- inpbox.append('<i class="search-icon dev-icon dev-icon-search"></i>');
749
-
750
- curitem = jQuery('<div class="current-item"></div>');
751
- curitem.appendTo(inpbox);
752
-
753
- resbox = jQuery('<div class="search-results"></div>');
754
- reslist = jQuery('<ul></ul>');
755
- reslist.appendTo(resbox);
756
- resbox.appendTo(wrap);
757
-
758
- emptybox = jQuery('<div class="no-results"></div>');
759
- emptybox.appendTo(wrap);
760
- emptybox.hide();
761
- }
762
-
763
- // Start a timer on each keystroke. When the timer runs out a 'search' event
764
- // is triggered.
765
- function startDelay() {
766
- clearDelay();
767
-
768
- // Ignore if value did not change (i.e. cursor keys, shift, return, ...)
769
- if (lastVal === jq.val()) { return; }
770
- lastVal = jq.val();
771
-
772
- tmrDelay = window.setTimeout(function() { jq.trigger('search'); }, 400);
773
- }
774
-
775
- // On key-DOWN we clear the timer.
776
- function clearDelay() {
777
- if (tmrDelay) {
778
- window.clearTimeout(tmrDelay);
779
- tmrDelay = 0;
780
- }
781
- }
782
-
783
- // Toggle the progress state of the search box.
784
- function doingProgress(state) {
785
- if (state) {
786
- wrap.addClass('progress');
787
- } else {
788
- wrap.removeClass('progress');
789
- }
790
- }
791
-
792
- // Clear/Hide the search-results list.
793
- function clearResults(clearFilter) {
794
- reslist.empty();
795
- curitem.hide();
796
- jq.show();
797
- hasResults = false;
798
- resultsVisible(false);
799
-
800
- if (clearFilter) {
801
- if (search) {
802
- jq.val(search);
803
- } else {
804
- jq.val('');
805
- }
806
- }
807
- }
808
-
809
- // Populate/Show the search-results list.
810
- function showResults(items) {
811
- clearResults(false);
812
-
813
- if (! items || ! items.length) {
814
- resultsVisible(true);
815
- return;
816
- }
817
-
818
- for (var i = 0; i < items.length; i += 1) {
819
- var li = jQuery('<li></li>'),
820
- item = items[i];
821
-
822
- if (! item.label) { continue; }
823
- li.html('<span class="item-label">' + item.label + '</span>');
824
-
825
- if (item.thumb) {
826
- li.prepend('<span class="thumb" style="background-image:url(' + item.thumb + ')">');
827
- }
828
- if (item.id) {
829
- li.attr('data-id', item.id);
830
- li.addClass('item item-' + item.id);
831
- }
832
-
833
- reslist.append(li);
834
- hasResults = true;
835
- }
836
- resultsVisible(true);
837
- }
838
-
839
- // Toggle visibility of the results.
840
- function resultsVisible(state) {
841
- emptybox.hide();
842
-
843
- if (! hasResults) {
844
- resbox.hide();
845
-
846
- if (jq.val() && state) {
847
- if (jq.data('no-empty-msg') || wrap.hasClass('progress')) {
848
- emptybox.hide();
849
- } else {
850
- if (!emptyMsg || !emptyMsg.length) {
851
- if (jq.data('empty-msg')) {
852
- emptyMsg = jq.data('empty-msg');
853
- } else {
854
- emptyMsg = WDP.lang.empty_search;
855
- }
856
- emptybox.text(emptyMsg);
857
- }
858
- emptybox.show();
859
- }
860
- }
861
- return;
862
- }
863
-
864
- if (state) {
865
- if (tmrHide) {
866
- window.clearTimeout(tmrHide);
867
- tmrHide = false;
868
- }
869
-
870
- resbox.show();
871
- } else {
872
- tmrHide = window.setTimeout(function() {
873
- resbox.hide();
874
- tmrHide = false;
875
- }, 300 );
876
- }
877
- }
878
-
879
- // Visually select a single search item
880
- function selectItem(item) {
881
- var item_label, title;
882
-
883
- if (item) {
884
- title = '';
885
- item_label = '';
886
-
887
- if (item.find('.thumb').length) {
888
- title += item.find('.thumb')[0].outerHTML;
889
- }
890
- if (item.find('.title').length) {
891
- item_label = item.find('.title').text();
892
- title += item.find('.title')[0].outerHTML;
893
- } else {
894
- item_label = item.find('.item-label').text();
895
- title += item.find('.item-label').html();
896
- }
897
-
898
- curitem.html(title);
899
- search = jq.val();
900
- jq.hide();
901
- curitem.show();
902
- resbox.hide();
903
-
904
- if (item.data('id')) {
905
- jq.val(item.data('id'));
906
- } else {
907
- jq.val(item_label);
908
- }
909
- jq.trigger('item:select');
910
- } else {
911
- jq.val(search);
912
- curitem.hide();
913
- jq.show();
914
- window.setTimeout(function(){jq.focus();}, 20);
915
- jq.trigger('item:clear');
916
- }
917
- }
918
-
919
- // Constructor.
920
- function init() {
921
- setupElement();
922
- clearResults(true);
923
-
924
- jq.on('keydown', clearDelay);
925
- jq.on('keyup', startDelay);
926
-
927
- jq.on('focus', function() { resultsVisible(true) } );
928
- jq.on('blur', function() { resultsVisible(false) } );
929
-
930
- jq.on('progress:start', function() { doingProgress(true); });
931
- jq.on('progress:stop', function() { doingProgress(false); });
932
-
933
- jq.on('results:clear', function() { clearResults(true); });
934
- jq.on('results:show', function(ev, data) { showResults(data); });
935
-
936
- wrap.on('click', '.search-results .item', function() { selectItem(jQuery(this)); });
937
- curitem.on('click', function() { selectItem(false); });
938
-
939
- wrap.on('click', '.search-icon', function() { jq.trigger('search'); jq.focus(); });
940
- }
941
-
942
- init();
943
-
944
- return WDP;
945
- };
946
-
947
- /**
948
- * Displays a message in the top of the window.
949
- *
950
- * @since 4.0.0
951
- */
952
- WDP.showMessage = function(action) {
953
- var me = this;
954
- initDom();
955
-
956
- // Options can also be passed in as object now :)
957
- if (action instanceof Object) {
958
- for (var key in action) {
959
- if (!action.hasOwnProperty(key)) {continue;}
960
- WDP.showMessage(key, action[key]);
961
- }
962
- return;
963
- }
964
-
965
- if (WDP.data._msg) {
966
- me.msg = WDP.data._msg;
967
- }
968
-
969
- switch (action) {
970
- case "type":
971
- switch ( arguments[1] ) {
972
- case "success":
973
- case "ok":
974
- case "green":
975
- WDP.data._msg = me.msgSuccess;
976
- break;
977
-
978
- case "error":
979
- case "err":
980
- case "red":
981
- WDP.data._msg = me.msgError;
982
- break;
983
- }
984
- break;
985
-
986
- case "message":
987
- var text = arguments[1];
988
- if (!text || !text.length) {
989
- me.msg.find(".extra-text").html("").hide();
990
- me.msg.find(".default-text").show();
991
- } else {
992
- me.msg.find(".extra-text").html(text).show();
993
- me.msg.find(".default-text").hide();
994
- }
995
- break;
996
-
997
- case "delay":
998
- var new_delay = parseInt( arguments[1] );
999
- if (!new_delay) {
1000
- me.delay = 0;
1001
- } else if (isNaN(new_delay) || new_delay < 2000) {
1002
- me.delay = 3000;
1003
- } else {
1004
- me.delay = new_delay;
1005
- }
1006
- break;
1007
-
1008
- case "icon":
1009
- if (false === arguments[1] || 0 === arguments[1]) {
1010
- me.msg.find(".the-msg-icon").hide();
1011
- } else {
1012
- me.msg.find(".the-msg-icon").show();
1013
- }
1014
- break;
1015
-
1016
- case "hide":
1017
- if (false === arguments[1] || 0 === arguments[1]) { break; }
1018
- hideMessage();
1019
- break;
1020
-
1021
- case "show":
1022
- default:
1023
- if (false === arguments[1] || 0 === arguments[1]) { break; }
1024
- showMessage();
1025
- break;
1026
- }
1027
-
1028
- // Dreate the DOM elements.
1029
- function initDom() {
1030
- if (WDP.data._message_dom_done) { return; }
1031
- WDP.data._message_dom_done = true;
1032
-
1033
- if (! WDP.lang.default_msg_ok) {
1034
- WDP.lang.default_msg_ok = "Okay, we saved your changes!";
1035
- }
1036
- if (! WDP.lang.default_msg_err) {
1037
- WDP.lang.default_msg_err = "Oops, we could not do this...";
1038
- }
1039
-
1040
- jQuery("body").append(
1041
- '<div class="update-notice ok" id="wdp-success" style="display:none">' +
1042
- '<span class="the-msg-icon check-animation"></span>' +
1043
- '<p><span class="default-text">' + WDP.lang.default_msg_ok + '</span>' +
1044
- '<span class="extra-text" style="display:none"></span></p>' +
1045
- '<span class="close">&times;</span>' +
1046
- '</div>'
1047
- )
1048
-
1049
- jQuery("body").append(
1050
- '<div class="update-notice err" id="wdp-error" style="display:none">' +
1051
- '<i class="the-msg-icon wdv-icon wdv-icon-warning-sign"></i>' +
1052
- '<p><span class="default-text">' + WDP.lang.default_msg_err + '</span>' +
1053
- '<span class="extra-text" style="display:none"></span></p>' +
1054
- '<span class="close">&times;</span>' +
1055
- '</div>'
1056
- );
1057
-
1058
- me.msgSuccess = jQuery("#wdp-success");
1059
- me.msgError = jQuery("#wdp-error");
1060
- me.msg = me.msgSuccess;
1061
- me.delay = 3000;
1062
- }
1063
-
1064
- // Show current message.
1065
- function showMessage() {
1066
- var tmr = me.msg.data("tmr");
1067
-
1068
- hideMessage();
1069
- if (tmr) {
1070
- window.setTimeout(WDP.showMessage, 20);
1071
- return;
1072
- }
1073
-
1074
- me.msg.show();
1075
- me.msg.one("click", ".close", hideMessage);
1076
-
1077
- // Hide the update notice box after a short time.
1078
- if (me.delay) {
1079
- tmr = window.setTimeout(function() {
1080
- me.msg.fadeOut();
1081
- me.msg.data("tmr", false);
1082
- }, me.delay);
1083
- me.msg.data("tmr", tmr);
1084
- me.msg.find(".close").hide();
1085
- } else {
1086
- me.msg.find(".close").show();
1087
- tmr = false;
1088
- me.msg.data("tmr", false);
1089
- }
1090
- }
1091
-
1092
- // Hide all messages.
1093
- function hideMessage() {
1094
- var tmr;
1095
-
1096
- // Success message.
1097
- tmr = me.msgSuccess.data("tmr");
1098
- if (tmr) {
1099
- window.clearTimeout(tmr);
1100
- me.msgSuccess.data("tmr", false);
1101
- }
1102
- me.msgSuccess.hide();
1103
-
1104
- // Error message.
1105
- tmr = me.msgError.data("tmr");
1106
- if (tmr) {
1107
- window.clearTimeout(tmr);
1108
- me.msgError.data("tmr", false);
1109
- }
1110
- me.msgError.hide();
1111
- }
1112
-
1113
- return WDP;
1114
- }
1115
-
1116
- /**
1117
- * Displays the "Changes saved" message in the top of the window.
1118
- *
1119
- * @since 4.0.0
1120
- */
1121
- WDP.showSuccess = function(message) {
1122
- var args = {
1123
- "type": "success",
1124
- "delay": 3000,
1125
- "icon": true,
1126
- "message": false,
1127
- "show": false
1128
- };
1129
-
1130
- if (message instanceof Object) {
1131
- WDP.showMessage(args);
1132
- message.show = true;
1133
- WDP.showMessage(message);
1134
- } else if ("string" === typeof message) {
1135
- args.message = message;
1136
- WDP.showMessage(args);
1137
- }
1138
-
1139
- return WDP;
1140
- };
1141
-
1142
- /**
1143
- * Displays the "Did not work" message in the top of the window.
1144
- *
1145
- * @since 4.0.0
1146
- */
1147
- WDP.showError = function(message) {
1148
- var args = {
1149
- "type": "error",
1150
- "delay": false,
1151
- "icon": true,
1152
- "message": false,
1153
- "show": true
1154
- };
1155
-
1156
- if (message instanceof Object) {
1157
- WDP.showMessage(args);
1158
- message.show = true;
1159
- WDP.showMessage(message);
1160
- } else if ("string" === typeof message) {
1161
- args.message = message;
1162
- WDP.showMessage(args);
1163
- }
1164
-
1165
- return WDP;
1166
- };
1167
-
1168
- /**
1169
- * Updates the hash-value in the current windows URL without scrolling to the
1170
- * element.
1171
- *
1172
- * @since 4.0.3
1173
- */
1174
- WDP.updateHash = function(newHash) {
1175
- newHash = newHash.replace( /^#/, '' );
1176
-
1177
- var fx,
1178
- node = jQuery( '#' + newHash );
1179
-
1180
- if (node.length) {
1181
- // Remove the ID value from the actual element.
1182
- node.attr('id', '');
1183
-
1184
- // Create a dummy element at current position with the specific ID.
1185
- fx = jQuery('<div></div>')
1186
- .css({
1187
- position: 'absolute',
1188
- visibility: 'hidden',
1189
- top: jQuery(document).scrollTop() + 'px'
1190
- })
1191
- .attr('id', newHash)
1192
- .appendTo(document.body);
1193
- }
1194
-
1195
- // Change hash value in the URL. Browser will scroll to _current position_.
1196
- document.location.hash = newHash;
1197
-
1198
- // Undo the changes from first part.
1199
- if (node.length) {
1200
- fx.remove();
1201
- node.attr('id', newHash);
1202
- }
1203
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/taxonomy.php CHANGED
@@ -1,34 +1,14 @@
1
  <?php
2
 
3
- class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
4
  /**
5
  * Static instance
6
  *
7
- * @var Smartcrawl_Taxonomy
8
  */
9
  private static $_instance;
10
- /**
11
- * State flag
12
- *
13
- * @var bool
14
- */
15
- private $_is_running = false;
16
-
17
- public function __construct() {
18
- }
19
-
20
- /**
21
- * Boot the hooking part
22
- */
23
- public static function run() {
24
- self::get()->_add_hooks();
25
- }
26
-
27
- public function _add_hooks() {
28
- if ( $this->_is_running ) {
29
- return false;
30
- }
31
 
 
32
  $taxonomy = smartcrawl_get_array_value( $_GET, 'taxonomy' ); // phpcs:ignore -- Can't add nonce to the request
33
  if ( is_admin() && ! empty( $taxonomy ) ) {
34
  add_action( sanitize_key( $taxonomy ) . '_edit_form', array(
@@ -38,8 +18,30 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
38
  }
39
 
40
  add_action( 'edit_term', array( &$this, 'update_term' ), 10, 3 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
- $this->_is_running = true;
 
43
  }
44
 
45
  /**
@@ -53,14 +55,12 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
53
  return self::$_instance;
54
  }
55
 
56
- public function form_row( $id, $label, $desc, $tax_meta, $type = 'text' ) {
57
- $val = ! empty( $tax_meta[ $id ] ) ? stripslashes( $tax_meta[ $id ] ) : '';
58
-
59
- include SMARTCRAWL_PLUGIN_DIR . 'admin/templates/taxonomy-form-row.php';
60
-
61
- }
62
-
63
  public function term_additions_form( $term, $taxonomy ) {
 
 
 
 
 
64
  $smartcrawl_options = Smartcrawl_Settings::get_options();
65
  $tax_meta = get_option( 'wds_taxonomy_meta' );
66
 
@@ -68,7 +68,6 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
68
  $tax_meta = $tax_meta[ $taxonomy ][ $term->term_id ];
69
  }
70
 
71
- $taxonomy_object = get_taxonomy( $taxonomy );
72
  $taxonomy_labels = $taxonomy_object->labels;
73
 
74
  $global_noindex = ! empty( $smartcrawl_options[ 'meta_robots-noindex-' . $term->taxonomy ] )
@@ -78,31 +77,26 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
78
  ? $smartcrawl_options[ 'meta_robots-nofollow-' . $term->taxonomy ]
79
  : false;
80
 
81
- $version = Smartcrawl_Loader::get_version();
82
- Smartcrawl_Settings_Admin::enqueue_shared_ui( false );
83
-
84
- wp_enqueue_style( 'wds-admin-opengraph', SMARTCRAWL_PLUGIN_URL . '/css/wds-opengraph.css', null, $version );
85
- wp_enqueue_style( 'wds-qtip2-style', SMARTCRAWL_PLUGIN_URL . '/css/external/jquery.qtip.min.css', null, $version );
86
- wp_enqueue_style( 'wds-app', SMARTCRAWL_PLUGIN_URL . 'css/app.css', array( 'wds-qtip2-style' ), $version );
87
-
88
  wp_enqueue_media();
89
 
90
- wp_enqueue_script( 'wds-admin', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin.js', array( 'jquery' ), $version );
91
-
92
- wp_localize_script( 'wds-admin', '_wds_admin', array(
93
- 'nonce' => wp_create_nonce( 'wds-admin-nonce' ),
 
 
 
94
  ) );
95
- wp_enqueue_script( 'wds-admin-opengraph', SMARTCRAWL_PLUGIN_URL . 'js/wds-admin-opengraph.js', array(
96
- 'underscore',
97
- 'jquery',
98
- 'wds-admin',
99
- ), $version );
100
-
101
- include SMARTCRAWL_PLUGIN_DIR . 'admin/templates/term-additions-form.php';
102
-
103
  }
104
 
105
  public function update_term( $term_id, $tt_id, $taxonomy ) {
 
 
 
 
 
106
  $smartcrawl_options = Smartcrawl_Settings::get_options();
107
 
108
  $tax_meta = get_option( 'wds_taxonomy_meta' );
@@ -117,7 +111,7 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
117
  if ( 'canonical' === $key ) {
118
  $value = esc_url_raw( $value );
119
  } else {
120
- $value = sanitize_text_field( $value );
121
  }
122
  $tax_meta[ $taxonomy ][ $term_id ]["wds_{$key}"] = $value;
123
  }
@@ -140,10 +134,10 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
140
  $data = is_array( $post_data['wds-opengraph'] ) ? stripslashes_deep( $post_data['wds-opengraph'] ) : array();
141
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph'] = array();
142
  if ( ! empty( $data['title'] ) ) {
143
- $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['title'] = sanitize_text_field( $data['title'] );
144
  }
145
  if ( ! empty( $data['description'] ) ) {
146
- $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['description'] = sanitize_text_field( $data['description'] );
147
  }
148
  if ( ! empty( $data['images'] ) && is_array( $data['images'] ) ) {
149
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['images'] = array();
@@ -152,16 +146,17 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
152
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['images'][] = $img;
153
  }
154
  }
 
155
  }
156
 
157
  if ( ! empty( $post_data['wds-twitter'] ) ) {
158
  $data = is_array( $post_data['wds-twitter'] ) ? stripslashes_deep( $post_data['wds-twitter'] ) : array();
159
  $tax_meta[ $taxonomy ][ $term_id ]['twitter'] = array();
160
  if ( ! empty( $data['title'] ) ) {
161
- $tax_meta[ $taxonomy ][ $term_id ]['twitter']['title'] = sanitize_text_field( $data['title'] );
162
  }
163
  if ( ! empty( $data['description'] ) ) {
164
- $tax_meta[ $taxonomy ][ $term_id ]['twitter']['description'] = sanitize_text_field( $data['description'] );
165
  }
166
  if ( ! empty( $data['images'] ) && is_array( $data['images'] ) ) {
167
  $tax_meta[ $taxonomy ][ $term_id ]['twitter']['images'] = array();
@@ -170,6 +165,7 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
170
  $tax_meta[ $taxonomy ][ $term_id ]['twitter']['images'][] = $img;
171
  }
172
  }
 
173
  }
174
 
175
  update_option( 'wds_taxonomy_meta', $tax_meta );
@@ -186,8 +182,4 @@ class Smartcrawl_Taxonomy extends Smartcrawl_Renderable {
186
  }
187
 
188
  }
189
-
190
- protected function _get_view_defaults() {
191
- return array();
192
- }
193
  }
1
  <?php
2
 
3
+ class Smartcrawl_Taxonomy extends Smartcrawl_Base_Controller {
4
  /**
5
  * Static instance
6
  *
7
+ * @var self
8
  */
9
  private static $_instance;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
+ protected function init() {
12
  $taxonomy = smartcrawl_get_array_value( $_GET, 'taxonomy' ); // phpcs:ignore -- Can't add nonce to the request
13
  if ( is_admin() && ! empty( $taxonomy ) ) {
14
  add_action( sanitize_key( $taxonomy ) . '_edit_form', array(
18
  }
19
 
20
  add_action( 'edit_term', array( &$this, 'update_term' ), 10, 3 );
21
+ add_action( 'wp_ajax_wds-term-form-preview', array( $this, 'json_create_preview' ) );
22
+ }
23
+
24
+ public function json_create_preview() {
25
+ $data = $this->get_request_data();
26
+ $term_id = (int) smartcrawl_get_array_value( $data, 'term_id' );
27
+ $result = array( 'success' => false );
28
+
29
+ if ( empty( $term_id ) ) {
30
+ wp_send_json( $result );
31
+
32
+ return;
33
+ }
34
+
35
+ $result['success'] = true;
36
+ $result['markup'] = Smartcrawl_Simple_Renderer::load( 'term/term-google-preview', array(
37
+ 'term' => get_term( $term_id ),
38
+ ) );
39
+
40
+ wp_send_json( $result );
41
+ }
42
 
43
+ private function get_request_data() {
44
+ return isset( $_POST['_wds_nonce'] ) && wp_verify_nonce( $_POST['_wds_nonce'], 'wds-metabox-nonce' ) ? stripslashes_deep( $_POST ) : array();
45
  }
46
 
47
  /**
55
  return self::$_instance;
56
  }
57
 
 
 
 
 
 
 
 
58
  public function term_additions_form( $term, $taxonomy ) {
59
+ $taxonomy_object = get_taxonomy( $taxonomy );
60
+ if ( ! $taxonomy_object->public ) {
61
+ return;
62
+ }
63
+
64
  $smartcrawl_options = Smartcrawl_Settings::get_options();
65
  $tax_meta = get_option( 'wds_taxonomy_meta' );
66
 
68
  $tax_meta = $tax_meta[ $taxonomy ][ $term->term_id ];
69
  }
70
 
 
71
  $taxonomy_labels = $taxonomy_object->labels;
72
 
73
  $global_noindex = ! empty( $smartcrawl_options[ 'meta_robots-noindex-' . $term->taxonomy ] )
77
  ? $smartcrawl_options[ 'meta_robots-nofollow-' . $term->taxonomy ]
78
  : false;
79
 
80
+ wp_enqueue_style( Smartcrawl_Controller_Assets::APP_CSS );
81
+ wp_enqueue_script( Smartcrawl_Controller_Assets::TERM_FORM_JS );
 
 
 
 
 
82
  wp_enqueue_media();
83
 
84
+ Smartcrawl_Simple_Renderer::render( 'term/term-form', array(
85
+ 'taxonomy_object' => $taxonomy_object,
86
+ 'taxonomy_labels' => $taxonomy_labels,
87
+ 'term' => $term,
88
+ 'global_noindex' => $global_noindex,
89
+ 'global_nofollow' => $global_nofollow,
90
+ 'tax_meta' => $tax_meta,
91
  ) );
 
 
 
 
 
 
 
 
92
  }
93
 
94
  public function update_term( $term_id, $tt_id, $taxonomy ) {
95
+ $taxonomy_object = get_taxonomy( $taxonomy );
96
+ if ( ! $taxonomy_object->public ) {
97
+ return;
98
+ }
99
+
100
  $smartcrawl_options = Smartcrawl_Settings::get_options();
101
 
102
  $tax_meta = get_option( 'wds_taxonomy_meta' );
111
  if ( 'canonical' === $key ) {
112
  $value = esc_url_raw( $value );
113
  } else {
114
+ $value = smartcrawl_sanitize_preserve_macros( $value );
115
  }
116
  $tax_meta[ $taxonomy ][ $term_id ]["wds_{$key}"] = $value;
117
  }
134
  $data = is_array( $post_data['wds-opengraph'] ) ? stripslashes_deep( $post_data['wds-opengraph'] ) : array();
135
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph'] = array();
136
  if ( ! empty( $data['title'] ) ) {
137
+ $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['title'] = smartcrawl_sanitize_preserve_macros( $data['title'] );
138
  }
139
  if ( ! empty( $data['description'] ) ) {
140
+ $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['description'] = smartcrawl_sanitize_preserve_macros( $data['description'] );
141
  }
142
  if ( ! empty( $data['images'] ) && is_array( $data['images'] ) ) {
143
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['images'] = array();
146
  $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['images'][] = $img;
147
  }
148
  }
149
+ $tax_meta[ $taxonomy ][ $term_id ]['opengraph']['disabled'] = ! empty( $data['disabled'] );
150
  }
151
 
152
  if ( ! empty( $post_data['wds-twitter'] ) ) {
153
  $data = is_array( $post_data['wds-twitter'] ) ? stripslashes_deep( $post_data['wds-twitter'] ) : array();
154
  $tax_meta[ $taxonomy ][ $term_id ]['twitter'] = array();
155
  if ( ! empty( $data['title'] ) ) {
156
+ $tax_meta[ $taxonomy ][ $term_id ]['twitter']['title'] = smartcrawl_sanitize_preserve_macros( $data['title'] );
157
  }
158
  if ( ! empty( $data['description'] ) ) {
159
+ $tax_meta[ $taxonomy ][ $term_id ]['twitter']['description'] = smartcrawl_sanitize_preserve_macros( $data['description'] );
160
  }
161
  if ( ! empty( $data['images'] ) && is_array( $data['images'] ) ) {
162
  $tax_meta[ $taxonomy ][ $term_id ]['twitter']['images'] = array();
165
  $tax_meta[ $taxonomy ][ $term_id ]['twitter']['images'][] = $img;
166
  }
167
  }
168
+ $tax_meta[ $taxonomy ][ $term_id ]['twitter']['disabled'] = ! empty( $data['disabled'] );
169
  }
170
 
171
  update_option( 'wds_taxonomy_meta', $tax_meta );
182
  }
183
 
184
  }
 
 
 
 
185
  }
includes/admin/templates/_forms/autolinks.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- $autolinks_enabled = $autolinks_network_enabled && $autolinks_locally_enabled;
3
- $form_action = $autolinks_enabled ? $_view['action_url'] : '';
4
- ?>
5
- <form action='<?php echo esc_attr( $form_action ); ?>' method='post' class="wds-form">
6
- <?php if ( $autolinks_enabled ) : ?>
7
- <?php settings_fields( $_view['option_name'] ); ?>
8
-
9
- <input type="hidden"
10
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
11
- value="1">
12
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/_forms/import-export.php DELETED
@@ -1,6 +0,0 @@
1
- <form method='post' enctype="multipart/form-data" class="wds-form">
2
- <?php settings_fields( $_view['option_name'] ); ?>
3
-
4
- <input type="hidden"
5
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
6
- value="1"/>
 
 
 
 
 
 
includes/admin/templates/_forms/redirections.php DELETED
@@ -1,2 +0,0 @@
1
- <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
2
- <?php settings_fields( $_view['option_name'] ); ?>
 
 
includes/admin/templates/_forms/settings.php DELETED
@@ -1,6 +0,0 @@
1
- <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
2
- <?php settings_fields( $_view['option_name'] ); ?>
3
-
4
- <input type="hidden"
5
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
6
- value="1"/>
 
 
 
 
 
 
includes/admin/templates/add-email-recipient-modal-body.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = empty( $id ) ? '' : $id;
3
+ ?>
4
+
5
+ <div class="sui-form-field">
6
+ <label class="sui-label"><?php esc_html_e( 'First name', 'wds' ); ?></label>
7
+ <input class="sui-form-control wds-recipient-name" placeholder="<?php esc_html_e( 'E.g. John', 'wds' ); ?>">
8
+ </div>
9
+
10
+ <div class="sui-form-field">
11
+ <label class="sui-label"><?php esc_html_e( 'Email address', 'wds' ); ?></label>
12
+ <input class="sui-form-control wds-recipient-email" placeholder="<?php esc_html_e( 'E.g. john@doe.com', 'wds' ); ?>">
13
+ </div>
includes/admin/templates/add-email-recipient-modal-footer.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = empty( $id ) ? '' : $id;
3
+ ?>
4
+
5
+ <button type="button"
6
+ class="sui-button sui-button-ghost wds-cancel-button"
7
+ data-a11y-dialog-hide="<?php echo esc_attr( $id ); ?>">
8
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
9
+ </button>
10
+
11
+ <div class="sui-actions-right">
12
+ <button type="button"
13
+ class="sui-button wds-add-email-recipient">
14
+ <?php esc_html_e( 'Add', 'wds' ); ?>
15
+ </button>
16
+ </div>
includes/admin/templates/advanced-tools/advanced-automatic-linking-types.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
+ $insert = empty( $insert ) ? array() : $insert;
4
+ $linkto = empty( $linkto ) ? array() : $linkto;
5
+ ?>
6
+
7
+ <div class="sui-row wds-autolink-types">
8
+ <div class="sui-col">
9
+ <div class="sui-field-list">
10
+
11
+ <div class="sui-field-list-header">
12
+ <h3 class="sui-field-list-title"><?php esc_html_e( 'Link To', 'wds' ); ?></h3>
13
+ <p id="link-to-description"
14
+ class="sui-description"><?php esc_html_e( 'Choose what post types to allow.', 'wds' ); ?></p>
15
+ </div>
16
+
17
+ <div class="sui-field-list-body">
18
+ <?php foreach ( $insert as $insert_key => $insert_label ): ?>
19
+ <?php $checked = ( ! empty( $_view['options'][ $insert_key ] ) ) ? "checked" : ''; ?>
20
+ <div class="sui-field-list-item">
21
+ <label class="sui-field-list-item-label"
22
+ for="<?php echo esc_attr( $option_name ); ?>-<?php echo esc_attr( $insert_key ); ?>">
23
+ <small><strong><?php echo esc_html( $insert_label ); ?></strong></small>
24
+ </label>
25
+ <label class="sui-toggle">
26
+ <input type="checkbox" <?php echo esc_attr( $checked ); ?>
27
+ aria-describedby="link-to-description"
28
+ value="<?php echo esc_attr( $insert_key ); ?>"
29
+ name="<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $insert_key ); ?>]"
30
+ id="<?php echo esc_attr( $option_name ); ?>-<?php echo esc_attr( $insert_key ); ?>">
31
+ <span aria-hidden="true" class="sui-toggle-slider"></span>
32
+ </label>
33
+ </div>
34
+ <?php endforeach; ?>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="sui-col">
40
+ <div class="sui-field-list">
41
+
42
+ <div class="sui-field-list-header">
43
+ <h3 class="sui-field-list-title"><?php esc_html_e( 'Insert Links', 'wds' ); ?></h3>
44
+ <p id="insert-list-description" class="sui-description">
45
+ <?php esc_html_e( 'Select what types can be linked to.', 'wds' ); ?>
46
+ </p>
47
+ </div>
48
+
49
+ <div class="sui-field-list-body">
50
+ <?php foreach ( $linkto as $linkto_key => $linkto_label ): ?>
51
+ <?php $checked = ( ! empty( $_view['options'][ $linkto_key ] ) ) ? "checked" : ''; ?>
52
+
53
+ <div class="sui-field-list-item">
54
+ <label class="sui-field-list-item-label"
55
+ for="<?php echo esc_attr( $option_name ); ?>-<?php echo esc_attr( $linkto_key ); ?>">
56
+ <small><strong><?php echo esc_html( $linkto_label ); ?></strong></small>
57
+ </label>
58
+ <label class="sui-toggle">
59
+ <input type="checkbox" <?php echo esc_attr( $checked ); ?>
60
+ aria-describedby="insert-list-description"
61
+ value="<?php echo esc_attr( $linkto_key ); ?>"
62
+ name="<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $linkto_key ); ?>]"
63
+ id="<?php echo esc_attr( $option_name ); ?>-<?php echo esc_attr( $linkto_key ); ?>">
64
+ <span aria-hidden="true" class="sui-toggle-slider"></span>
65
+ </label>
66
+ </div>
67
+ <?php endforeach; ?>
68
+ </div>
69
+
70
+ </div>
71
+ </div>
72
+ </div>
includes/admin/templates/advanced-tools/advanced-section-automatic-linking-main.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $insert = empty( $insert ) ? array() : $insert;
3
+ $linkto = empty( $linkto ) ? array() : $linkto;
4
+ $custom_keywords = empty( $_view['options']['customkey'] ) ? '' : $_view['options']['customkey'];
5
+
6
+ $this->_render( 'advanced-tools/advanced-automatic-linking-types', array(
7
+ 'insert' => $insert,
8
+ 'linkto' => $linkto,
9
+ ) );
10
+ ?>
11
+
12
+ <div class="sui-box-settings-row">
13
+ <div>
14
+ <div class="sui-form-field">
15
+ <label class="sui-settings-label"><?php esc_html_e( 'Custom Links', 'wds' ); ?></label>
16
+ <p class="sui-description"><?php esc_html_e( 'Choose additional custom keywords you want to target, and where to link them to.', 'wds' ); ?></p>
17
+ </div>
18
+
19
+ <div class="box-autolinks-custom-keywords-settings">
20
+ <div class="wds-replaceable">
21
+ <?php // phpcs:disable ?>
22
+ <label>
23
+ <textarea id='customkey'
24
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[customkey]'
25
+ class='wds-textarea'><?php echo esc_textarea( $custom_keywords ); ?></textarea>
26
+ </label>
27
+ <?php // phpcs:enable ?>
28
+ </div>
29
+
30
+ <div id="wds-custom-keywords"></div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="sui-box-settings-row">
36
+ <div>
37
+ <div class="sui-form-field">
38
+ <label for="ignore" class="sui-settings-label"><?php esc_html_e( 'Exclusions', 'wds' ); ?></label>
39
+ <p class="sui-description"><?php esc_html_e( 'Provide a comma-separated list of keywords that you would like to exclude. You can also select individual posts for exclusion.', 'wds' ); ?></p>
40
+
41
+ <label for="ignore" class="sui-label"><?php esc_html_e( 'Excluded Keywords', 'wds' ); ?></label>
42
+ <input id='ignore' name='<?php echo esc_attr( $_view['option_name'] ); ?>[ignore]' size='' type='text'
43
+ class='sui-form-control' value='<?php echo esc_attr( $_view['options']['ignore'] ); ?>'>
44
+ </div>
45
+ <div class="sui-form-field">
46
+ <div class="wds-excluded-posts">
47
+ <label for="ignorepost"
48
+ class="sui-label"><?php esc_html_e( 'Exclude Posts/Pages', 'wds' ); ?></label>
49
+ <div class="wds-replaceable">
50
+ <input id='ignorepost' name='<?php echo esc_attr( $_view['option_name'] ); ?>[ignorepost]' size=''
51
+ type='text' class='sui-form-control'
52
+ value='<?php echo esc_attr( $_view['options']['ignorepost'] ); ?>'>
53
+ <p class="sui-description">
54
+ <?php esc_html_e( 'Paste in the IDs, slugs or titles for the post/pages you wish to exclude and separate them by commas', 'wds' ); ?>
55
+ </p>
56
+ </div>
57
+ <?php $this->_render( 'advanced-tools/underscore-postlist-selector' ); ?>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
includes/admin/templates/advanced-tools/advanced-section-automatic-linking-settings.php CHANGED
@@ -9,72 +9,57 @@ $additional_settings = empty( $additional_settings ) ? array() : $additional_set
9
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
10
  ?>
11
 
12
- <div class="wds-table-fields wds-separator-top">
13
- <div class="label">
14
- <label class="wds-label"><?php esc_html_e( 'Min lengths', 'wds' ); ?></label>
15
- <p class="wds-label-description"><?php esc_html_e( 'Define the shortest title and taxonomy length to autolink. Smaller titles will be ignored.', 'wds' ); ?></p>
16
  </div>
17
 
18
- <div class="fields">
19
- <div class="row">
20
- <div class="wds-table-fields wds-table-fields-stacked col-half">
21
- <div class="label">
22
- <label for="cpt_char_limit" class="wds-label"><?php esc_html_e( 'Posts & pages', 'wds' ); ?></label>
23
- </div>
24
- <div class="fields wds-allow-macros">
25
- <input id='cpt_char_limit' name='<?php echo esc_attr( $option_name ); ?>[cpt_char_limit]'
26
- type='text' class='wds-field'
27
- value='<?php echo esc_attr( $_view['options']['cpt_char_limit'] ); ?>'>
28
- </div>
29
  </div>
30
 
31
- <div class="wds-table-fields wds-table-fields-stacked col-half">
32
- <div class="label">
33
- <label for="tax_char_limit"
34
- class="wds-label"><?php esc_html_e( 'Archives & taxonomies', 'wds' ); ?></label>
35
- </div>
36
- <div class="fields wds-allow-macros">
37
- <input id='tax_char_limit' name='<?php echo esc_attr( $option_name ); ?>[tax_char_limit]'
38
- type='text' class='wds-field'
39
- value='<?php echo esc_attr( $_view['options']['tax_char_limit'] ); ?>'>
40
- </div>
41
  </div>
42
  </div>
43
- <p class="wds-label-description"><?php esc_html_e( 'We recommend a minimum of 10 chars for each type.', 'wds' ); ?></p>
44
  </div>
45
  </div>
46
 
47
- <div class="wds-table-fields wds-separator-top">
48
- <div class="label">
49
- <label class="wds-label"><?php esc_html_e( 'Max limits', 'wds' ); ?></label>
50
- <p class="wds-label-description"><?php esc_html_e( 'Set the max amount of links you want to appear per post.', 'wds' ); ?></p>
51
  </div>
52
 
53
- <div class="fields">
54
- <div class="row">
55
- <div class="wds-table-fields wds-table-fields-stacked col-half">
56
- <div class="label">
57
- <label for="link_limit" class="wds-label"><?php esc_html_e( 'Per post total', 'wds' ); ?></label>
58
- </div>
59
- <div class="fields wds-allow-macros">
60
- <input id='link_limit' name='<?php echo esc_attr( $option_name ); ?>[link_limit]' type='text'
61
- class='wds-field' value='<?php echo esc_attr( $_view['options']['link_limit'] ); ?>'>
62
- </div>
63
  </div>
64
 
65
- <div class="wds-table-fields wds-table-fields-stacked col-half">
66
- <div class="label">
67
- <label for="single_link_limit"
68
- class="wds-label"><?php esc_html_e( 'Per keyword group', 'wds' ); ?></label>
69
- </div>
70
- <div class="fields wds-allow-macros">
71
- <input id='single_link_limit' name='<?php echo esc_attr( $option_name ); ?>[single_link_limit]'
72
- type='text' class='wds-field'
73
- value='<?php echo esc_attr( $_view['options']['single_link_limit'] ); ?>'>
74
- </div>
75
  </div>
76
  </div>
77
- <p class="wds-label-description"><?php esc_html_e( 'Use 0 to allow unlimited automatic links.', 'wds' ); ?></p>
78
  </div>
79
  </div>
80
 
@@ -86,3 +71,21 @@ $this->_render( 'toggle-group', array(
86
  'separator' => true,
87
  ) );
88
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
10
  ?>
11
 
12
+ <div class="sui-box-settings-row">
13
+ <div class="sui-box-settings-col-1">
14
+ <label class="sui-settings-label"><?php esc_html_e( 'Min lengths', 'wds' ); ?></label>
15
+ <p class="sui-description"><?php esc_html_e( 'Define the shortest title and taxonomy length to autolink. Smaller titles will be ignored.', 'wds' ); ?></p>
16
  </div>
17
 
18
+ <div class="sui-box-settings-col-2">
19
+ <div class="sui-row">
20
+ <div class="sui-form-field sui-col">
21
+ <label for="cpt_char_limit" class="sui-label"><?php esc_html_e( 'Posts & pages', 'wds' ); ?></label>
22
+ <input id='cpt_char_limit' name='<?php echo esc_attr( $option_name ); ?>[cpt_char_limit]'
23
+ type='text' class='sui-form-control sui-input-sm'
24
+ value='<?php echo esc_attr( $_view['options']['cpt_char_limit'] ); ?>'>
 
 
 
 
25
  </div>
26
 
27
+ <div class="sui-form-field sui-col">
28
+ <label for="tax_char_limit"
29
+ class="sui-label"><?php esc_html_e( 'Archives & taxonomies', 'wds' ); ?></label>
30
+ <input id='tax_char_limit' name='<?php echo esc_attr( $option_name ); ?>[tax_char_limit]'
31
+ type='text' class='sui-form-control sui-input-sm'
32
+ value='<?php echo esc_attr( $_view['options']['tax_char_limit'] ); ?>'>
 
 
 
 
33
  </div>
34
  </div>
35
+ <p class="sui-description"><?php esc_html_e( 'We recommend a minimum of 10 chars for each type.', 'wds' ); ?></p>
36
  </div>
37
  </div>
38
 
39
+ <div class="sui-box-settings-row">
40
+ <div class="sui-box-settings-col-1">
41
+ <label class="sui-settings-label"><?php esc_html_e( 'Max limits', 'wds' ); ?></label>
42
+ <p class="sui-description"><?php esc_html_e( 'Set the max amount of links you want to appear per post.', 'wds' ); ?></p>
43
  </div>
44
 
45
+ <div class="sui-box-settings-col-2">
46
+ <div class="sui-row">
47
+ <div class="sui-form-field sui-col">
48
+ <label for="link_limit" class="sui-label"><?php esc_html_e( 'Per post total', 'wds' ); ?></label>
49
+ <input id='link_limit' name='<?php echo esc_attr( $option_name ); ?>[link_limit]' type='text'
50
+ class='sui-form-control sui-input-sm'
51
+ value='<?php echo esc_attr( $_view['options']['link_limit'] ); ?>'>
 
 
 
52
  </div>
53
 
54
+ <div class="sui-form-field sui-col">
55
+ <label for="single_link_limit"
56
+ class="sui-label"><?php esc_html_e( 'Per keyword group', 'wds' ); ?></label>
57
+ <input id='single_link_limit' name='<?php echo esc_attr( $option_name ); ?>[single_link_limit]'
58
+ type='text' class='sui-form-control sui-input-sm'
59
+ value='<?php echo esc_attr( $_view['options']['single_link_limit'] ); ?>'>
 
 
 
 
60
  </div>
61
  </div>
62
+ <p class="sui-description"><?php esc_html_e( 'Use 0 to allow unlimited automatic links.', 'wds' ); ?></p>
63
  </div>
64
  </div>
65
 
71
  'separator' => true,
72
  ) );
73
  ?>
74
+
75
+ <div class="sui-box-settings-row">
76
+ <div class="sui-box-settings-col-1">
77
+ <label class="sui-settings-label">
78
+ <?php esc_html_e( 'Deactivate', 'wds' ); ?>
79
+ </label>
80
+ <p class="sui-description">
81
+ <?php esc_html_e( 'No longer need keyword linking? This will deactivate this feature and remove existing links.', 'wds' ); ?>
82
+ </p>
83
+ </div>
84
+ <div class="sui-box-settings-col-2">
85
+ <button type="submit" name="deactivate-autolinks-component"
86
+ class="sui-button sui-button-ghost">
87
+ <i class="sui-icon-power-on-off" aria-hidden="true"></i>
88
+ <?php esc_html_e( 'Deactivate', 'wds' ); ?>
89
+ </button>
90
+ </div>
91
+ </div>
includes/admin/templates/advanced-tools/advanced-section-automatic-linking.php CHANGED
@@ -1,64 +1,44 @@
1
  <?php
2
  $insert = empty( $insert ) ? array() : $insert;
3
  $linkto = empty( $linkto ) ? array() : $linkto;
4
- ?>
 
 
 
5
 
6
- <div class="wds-automatic-linking">
7
- <div class="cf">
8
- <div class="wds-automatic-linking-insert-links">
9
- <?php
10
- $this->_render( 'toggle-group', array(
11
- 'label' => __( 'Insert Links', 'wds' ),
12
- 'description' => __( 'Specify what post types to insert links into.', 'wds' ),
13
- 'items' => $insert,
14
- ) );
15
- ?>
16
- </div>
17
-
18
- <div class="wds-automatic-linking-link-to">
19
- <?php
20
- $this->_render( 'toggle-group', array(
21
- 'label' => __( 'Link to', 'wds' ),
22
- 'description' => __( 'Choose content you want to convert to links.', 'wds' ),
23
- 'items' => $linkto,
24
- ) );
25
- ?>
26
- </div>
27
- </div>
28
-
29
- <div class="wds-table-fields wds-separator-top">
30
- <label class="wds-label"><?php esc_html_e( 'Custom keywords', 'wds' ); ?></label>
31
- <p class="wds-label-description"><?php esc_html_e( 'Choose additional keywords you want to auto-link and tell SmartCrawl where to link to. Add as many as you like.', 'wds' ); ?></p>
32
- </div>
33
-
34
- <div class="box-autolinks-custom-keywords-settings">
35
- <div class="wds-replaceable">
36
- <div class="group wds-group wds-group-field">
37
- <label for="customkey" class="wds-label"><?php esc_html_e( 'Custom Keywords', 'wds' ); ?></label>
38
- <?php // phpcs:disable ?>
39
- <textarea id='customkey' name='<?php echo esc_attr( $_view['option_name'] ); ?>[customkey]'
40
- class='wds-textarea'><?php
41
- echo esc_textarea( $_view['options']['customkey'] );
42
- ?></textarea>
43
- <?php // phpcs:enable ?>
44
- </div>
45
- </div>
46
- </div>
47
-
48
- <div class="wds-table-fields wds-separator-top">
49
- <label for="ignore" class="wds-label"><?php esc_html_e( 'Exclusions', 'wds' ); ?></label>
50
- <p class="wds-label-description"><?php esc_html_e( 'Provide a comma-separated list of keywords that you would like to exclude. You can also select individual posts for exclusion.', 'wds' ); ?></p>
51
- <input id='ignore' name='<?php echo esc_attr( $_view['option_name'] ); ?>[ignore]' size='' type='text'
52
- class='wds-field' value='<?php echo esc_attr( $_view['options']['ignore'] ); ?>'>
53
- </div>
54
- <div class="group wds-group wds-group-field">
55
- <div class="wds-replaceable">
56
- <label for="ignorepost"
57
- class="wds-label"><?php esc_html_e( 'Exclude Posts, Pages & CPTs', 'wds' ); ?></label>
58
- <input id='ignorepost' name='<?php echo esc_attr( $_view['option_name'] ); ?>[ignorepost]' size=''
59
- type='text' class='wds-field' value='<?php echo esc_attr( $_view['options']['ignorepost'] ); ?>'>
60
- <span
61
- class="wds-field-legend"><?php esc_html_e( 'Paste in the IDs, slugs or titles for the post/pages you wish to exclude and separate them by commas', 'wds' ); ?></span>
62
- </div>
63
- </div>
64
- </div>
1
  <?php
2
  $insert = empty( $insert ) ? array() : $insert;
3
  $linkto = empty( $linkto ) ? array() : $linkto;
4
+ $this->_render( 'advanced-tools/advanced-section-automatic-linking-main', array(
5
+ 'insert' => $insert,
6
+ 'linkto' => $linkto,
7
+ ) );
8
 
9
+ $this->_render( 'advanced-tools/advanced-section-automatic-linking-settings', array(
10
+ 'additional_settings' => array(
11
+ 'allow_empty_tax' => array(
12
+ 'label' => esc_html__( 'Allow autolinks to empty taxonomies', 'wds' ),
13
+ 'description' => esc_html__( 'Allows autolinking to taxonomies that have no posts assigned to them.', 'wds' ),
14
+ ),
15
+ 'excludeheading' => array(
16
+ 'label' => esc_html__( 'Prevent linking in heading tags', 'wds' ),
17
+ 'description' => esc_html__( 'Excludes headings from autolinking.', 'wds' ),
18
+ ),
19
+ 'onlysingle' => array(
20
+ 'label' => esc_html__( 'Process only single posts and pages', 'wds' ),
21
+ 'description' => esc_html__( 'Process only single posts and pages', 'wds' ),
22
+ ),
23
+ 'allowfeed' => array(
24
+ 'label' => esc_html__( 'Process RSS feeds', 'wds' ),
25
+ 'description' => esc_html__( 'Autolinking will also occur in RSS feeds.', 'wds' ),
26
+ ),
27
+ 'casesens' => array(
28
+ 'label' => esc_html__( 'Case sensitive matching', 'wds' ),
29
+ 'description' => esc_html__( 'Only autolink the exact string match.', 'wds' ),
30
+ ),
31
+ 'customkey_preventduplicatelink' => array(
32
+ 'label' => esc_html__( 'Prevent duplicate links', 'wds' ),
33
+ 'description' => esc_html__( 'Only link to a specific URL once per page/post.', 'wds' ),
34
+ ),
35
+ 'target_blank' => array(
36
+ 'label' => esc_html__( 'Open links in new tab', 'wds' ),
37
+ 'description' => esc_html__( 'Adds the target=“_blank” tag to links to open a new tab when clicked.', 'wds' ),
38
+ ),
39
+ 'rel_nofollow' => array(
40
+ 'label' => esc_html__( 'Nofollow autolinks', 'wds' ),
41
+ 'description' => esc_html__( 'Adds the nofollow meta tag to autolinks to prevent search engines following those URLs when crawling your website.', 'wds' ),
42
+ ),
43
+ ),
44
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/advanced-tools/advanced-section-moz.php CHANGED
@@ -1,69 +1,84 @@
1
  <?php
2
  $smartcrawl_options = Smartcrawl_Settings::get_options();
3
- $access_id = empty( $smartcrawl_options['access-id'] ) ? '' : $smartcrawl_options['access-id'];
4
- $secret_key = empty( $smartcrawl_options['secret-key'] ) ? '' : $smartcrawl_options['secret-key'];
 
 
 
5
  ?>
6
 
7
  <?php if ( empty( $access_id ) || empty( $secret_key ) ) : ?>
8
  <div class="wds-disabled-component">
 
 
 
 
 
 
9
  <p>
10
- <img
11
- src="<?php echo esc_attr( SMARTCRAWL_PLUGIN_URL ); ?>/images/<?php echo esc_attr( 'moz-disabled.png' ); ?>"
12
- alt="<?php esc_attr_e( 'MOZ Disabled', 'wds' ); ?>" class="wds-disabled-image"/>
13
  </p>
14
- <p><?php esc_html_e( 'Moz provides reports that tell you how your site stacks up against the competition with all of the important SEO measurement tools - ranking, links, and much more.', 'wds' ); ?></p>
15
  </div>
16
  <div class="wds-moz-api-credentials">
17
- <p>
18
- <?php
19
- printf(
20
- esc_html__( 'Connect your Moz account. You can get the API credentials %s.', 'wds' ),
21
- sprintf( '<a href="https://moz.com/products/api" target="_blank">%s</a>', esc_html__( 'here', 'wds' ) )
22
- );
23
- ?>
24
- </p>
25
  <form method="POST" class="wds-form">
26
- <div class="row">
27
- <div class="col-half wds-table-fields wds-table-fields-stacked">
28
- <div class="label">
29
- <label class="wds-label"
 
 
 
 
 
 
 
30
  for="wds-moz-access-id"><?php esc_html_e( 'Access ID', 'wds' ); ?></label>
 
 
 
 
 
 
 
31
  </div>
32
- <div class="fields">
33
- <input
34
- type="text"
35
- id="wds-moz-access-id"
36
- name="wds-moz-access-id"
37
- placeholder="<?php esc_attr_e( 'Enter your Moz Access ID', 'wds' ); ?>"
38
- value="<?php echo esc_attr( $access_id ); ?>"/>
39
- </div>
40
- </div>
41
 
42
- <div class="col-half wds-table-fields wds-table-fields-stacked">
43
- <div class="label">
44
- <label class="wds-label"
45
  for="wds-moz-secret-key"><?php esc_html_e( 'Secret Key', 'wds' ); ?></label>
 
 
 
 
 
 
 
46
  </div>
47
- <div class="fields">
48
- <input
49
- type="text"
50
- id="wds-moz-secret-key"
51
- name="wds-moz-secret-key"
52
- placeholder="<?php esc_attr_e( 'Enter your Moz Secret Key', 'wds' ); ?>"
53
- value="<?php echo esc_attr( $secret_key ); ?>"/>
54
- </div>
55
  </div>
56
- <?php wp_nonce_field( 'wds-settings-nonce', '_wds_nonce' ); ?>
57
  </div>
58
- <input name='submit' type='submit' class='button' value='<?php esc_attr_e( 'Connect', 'wds' ); ?>'/>
 
 
 
 
 
 
 
 
59
  </form>
60
  </div>
61
  <?php else : ?>
62
- <p class="wds-content-tabs-description">
63
- <?php esc_html_e( 'Here’s how your site stacks up against the competition as defined by Moz. You can also see individual stats per post in the post editor under the Moz module.', 'wds' ); ?>
64
- </p>
65
- <button type="submit" class="button button-small button-dark button-dark-o" name="reset-moz-credentials"
66
  value="1"><?php esc_html_e( 'Reset API Credentials', 'wds' ); ?></button>
67
  <?php wp_nonce_field( 'wds-autolinks-nonce', '_wds_nonce' ); ?>
68
- <?php Smartcrawl_Seomoz_Dashboard_Widget::widget(); ?>
69
  <?php endif; ?>
1
  <?php
2
  $smartcrawl_options = Smartcrawl_Settings::get_options();
3
+ $access_id = Smartcrawl_Settings::get_setting( 'access-id' );
4
+ $secret_key = Smartcrawl_Settings::get_setting( 'secret-key' );
5
+
6
+ $image_url = sprintf( '%s/assets/images/graphic-moz-disabled.svg', SMARTCRAWL_PLUGIN_URL );
7
+ $image_url = Smartcrawl_White_Label::get()->get_wpmudev_hero_image( $image_url );
8
  ?>
9
 
10
  <?php if ( empty( $access_id ) || empty( $secret_key ) ) : ?>
11
  <div class="wds-disabled-component">
12
+ <?php if ( $image_url ): ?>
13
+ <p>
14
+ <img src="<?php echo esc_attr( $image_url ); ?>"
15
+ alt="<?php esc_attr_e( 'MOZ Disabled', 'wds' ); ?>" class="wds-disabled-image"/>
16
+ </p>
17
+ <?php endif; ?>
18
  <p>
19
+ <?php esc_html_e( 'Moz provides reports that tell you how your site stacks up against the competition with all of', 'wds' ); ?>
20
+ <br/><?php esc_html_e( 'the important SEO measurement tools - ranking, links, and much more.', 'wds' ); ?>
 
21
  </p>
 
22
  </div>
23
  <div class="wds-moz-api-credentials">
 
 
 
 
 
 
 
 
24
  <form method="POST" class="wds-form">
25
+ <div class="wds-moz-fields">
26
+ <div class="wds-moz-fields-inner">
27
+ <p class="sui-p-small">
28
+ <?php printf(
29
+ esc_html__( 'Connect your Moz account. You can get the API credentials %s.', 'wds' ),
30
+ sprintf( '<a href="https://moz.com/products/mozscape/access" target="_blank">%s</a>', esc_html__( 'here', 'wds' ) )
31
+ ); ?>
32
+ </p>
33
+
34
+ <div class="sui-form-field">
35
+ <label class="sui-label"
36
  for="wds-moz-access-id"><?php esc_html_e( 'Access ID', 'wds' ); ?></label>
37
+ <input type="text"
38
+ id="wds-moz-access-id"
39
+ name="wds-moz-access-id"
40
+ class="sui-form-control"
41
+ placeholder="<?php esc_attr_e( 'Enter your Moz Access ID', 'wds' ); ?>"
42
+ value="<?php echo esc_attr( $access_id ); ?>"/>
43
+ <span class="sui-error-message"><?php esc_html_e( 'Please enter a valid Moz Access ID', 'wds' ); ?></span>
44
  </div>
 
 
 
 
 
 
 
 
 
45
 
46
+ <div class="sui-form-field">
47
+ <label class="sui-label"
 
48
  for="wds-moz-secret-key"><?php esc_html_e( 'Secret Key', 'wds' ); ?></label>
49
+ <input type="text"
50
+ id="wds-moz-secret-key"
51
+ name="wds-moz-secret-key"
52
+ class="sui-form-control"
53
+ placeholder="<?php esc_attr_e( 'Enter your Moz Secret Key', 'wds' ); ?>"
54
+ value="<?php echo esc_attr( $secret_key ); ?>"/>
55
+ <span class="sui-error-message"><?php esc_html_e( 'Please enter a valid Moz Secret Key', 'wds' ); ?></span>
56
  </div>
57
+ <button type="submit"
58
+ class="sui-button sui-button-blue">
59
+
60
+ <span class="sui-loading-text"><?php esc_html_e( 'Connect', 'wds' ); ?></span>
61
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
62
+ </button>
63
+ <?php wp_nonce_field( 'wds-settings-nonce', '_wds_nonce' ); ?>
 
64
  </div>
 
65
  </div>
66
+
67
+ <p class="wds-moz-signup-notice">
68
+ <small>
69
+ <?php printf(
70
+ esc_html__( "Don't have an account yet? %s.", 'wds' ),
71
+ sprintf( '<a href="https://moz.com/community/join" target="_blank">%s</a>', esc_html__( 'Sign up free', 'wds' ) )
72
+ ); ?>
73
+ </small>
74
+ </p>
75
  </form>
76
  </div>
77
  <?php else : ?>
78
+ <p><?php esc_html_e( 'Here’s how your site stacks up against the competition as defined by Moz. You can also see individual stats per post in the post editor under the Moz module.', 'wds' ); ?></p>
79
+
80
+ <button type="submit" class="sui-button" name="reset-moz-credentials"
 
81
  value="1"><?php esc_html_e( 'Reset API Credentials', 'wds' ); ?></button>
82
  <?php wp_nonce_field( 'wds-autolinks-nonce', '_wds_nonce' ); ?>
83
+ <?php Smartcrawl_Moz_Dashboard_Widget::widget(); ?>
84
  <?php endif; ?>
includes/admin/templates/advanced-tools/advanced-section-redirect-settings.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
+ $plugin_settings = Smartcrawl_Settings::get_specific_options( 'wds_settings_options' );
4
+ $current_redirection_code = smartcrawl_get_array_value( $plugin_settings, 'redirections-code' );
5
+ $redirection_types = array(
6
+ 301 => __( 'Permanent (301)', 'wds' ),
7
+ 302 => __( 'Temporary (302)', 'wds' ),
8
+ );
9
+
10
+ $this->_render( 'toggle-group', array(
11
+ 'label' => __( 'Redirect attachments', 'wds' ),
12
+ 'description' => __( 'Redirect attachments to their parent post, preventing them from appearing in SERPs.', 'wds' ),
13
+ 'items' => array(
14
+ 'redirect-attachments' => esc_html__( 'Redirect attachments', 'wds' ),
15
+ 'redirect-attachments-images_only' => esc_html__( '... but only if the attachment is image', 'wds' ),
16
+ ),
17
+ ) );
18
+ ?>
19
+
20
+ <div class="sui-box-settings-row">
21
+ <div class="sui-box-settings-col-1">
22
+ <label class="sui-settings-label" for="wds-default-redirection-type">
23
+ <?php esc_html_e( 'Default Redirection Type', 'wds' ); ?>
24
+ </label>
25
+ <p class="sui-description">
26
+ <?php esc_html_e( 'Select the redirection type that you would like to be used as default.', 'wds' ); ?>
27
+ </p>
28
+ </div>
29
+
30
+ <div class="sui-box-settings-col-2">
31
+ <select id="wds-default-redirection-type"
32
+ name="<?php echo esc_attr( $option_name ); ?>[redirections-code]"
33
+ autocomplete="off"
34
+ data-minimum-results-for-search="-1"
35
+ class="sui-select">
36
+ <?php foreach ( $redirection_types as $redirection_type => $redirection_type_label ): ?>
37
+ <option value="<?php echo esc_attr( $redirection_type ); ?>"
38
+ <?php echo selected( $redirection_type, $current_redirection_code, false ); ?>>
39
+ <?php echo esc_html( $redirection_type_label ); ?>
40
+ </option>
41
+ <?php endforeach; ?>
42
+ </select>
43
+ </div>
44
+ </div>
includes/admin/templates/advanced-tools/advanced-section-redirects.php CHANGED
@@ -3,107 +3,58 @@ $redirections = empty( $redirections ) ? array() : $redirections;
3
  $types = empty( $types ) ? array() : $types;
4
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
5
  $plugin_settings = Smartcrawl_Settings::get_specific_options( 'wds_settings_options' );
6
- $current_redirection_code = smartcrawl_get_array_value( $plugin_settings, 'redirections-code' );
7
- $redirection_types = array(
8
- 301 => __( 'Permanent (301)', 'wds' ),
9
- 302 => __( 'Temporary (302)', 'wds' ),
10
- );
11
  ?>
12
 
13
- <div class="wds-redirect-attachments wds-separator-top">
14
- <?php
15
- $this->_render( 'toggle-group', array(
16
- 'label' => __( 'Redirect attachments', 'wds' ),
17
- 'description' => __( 'Redirect attachments to their parent post, preventing them from appearing in SERPs.', 'wds' ),
18
- 'items' => array(
19
- 'redirect-attachments' => __( 'Redirect attachments', 'wds' ),
20
- 'redirect-attachments-images_only' => __( '... but only if the attachment is image', 'wds' ),
21
- ),
22
- ) );
23
- ?>
24
- </div>
25
 
26
- <div class="wds-table-fields wds-separator-top">
27
- <div class="label">
28
- <label class="wds-label" for="wds-default-redirection-type">
29
- <?php esc_html_e( 'Default Redirection Type', 'wds' ); ?>
30
- </label>
31
- <p class="wds-label-description">
32
- <?php esc_html_e( 'Select the redirection type that you would like to be used as default.', 'wds' ); ?>
33
- </p>
34
- </div>
35
- <div class="fields">
36
- <select id="wds-default-redirection-type"
37
- name="<?php echo esc_attr( $option_name ); ?>[redirections-code]"
38
- autocomplete="off"
39
- class="select-container"
40
- style="width: 100%">
41
- <?php foreach ( $redirection_types as $redirection_type => $redirection_type_label ): ?>
42
- <option value="<?php echo esc_attr( $redirection_type ); ?>"
43
- <?php echo selected( $redirection_type, $current_redirection_code, false ); ?>>
44
- <?php echo esc_html( $redirection_type_label ); ?>
45
- </option>
46
- <?php endforeach; ?>
47
- </select>
48
- </div>
49
- </div>
50
 
51
- <input type="hidden" value="1" name="<?php echo esc_attr( $option_name ); ?>[save_redirects]"/>
52
- <div class="wds-redirects wds-separator-top">
53
- <label class="wds-label"><?php esc_html_e( 'Redirects', 'wds' ); ?></label>
54
- <p class="wds-small-text">
55
- <?php esc_html_e( 'Adding entries here will set up a redirect from one URL to another.', 'wds' ); ?>
56
- </p>
57
- <p class="wds-small-text">
58
- <?php esc_html_e( 'Formats include relative (E.g. /cats) or absolute URLs (E.g. www.website.com/cats or https://website.com/cats).', 'wds' ); ?>
59
- </p>
60
- <div class="wds-redirects-buttons-top">
61
- <button
62
- class="wds-bulk-update button button-small button-dark"><?php esc_html_e( 'Bulk Update', 'wds' ); ?></button>
63
- <button
64
- class="wds-bulk-remove button button-small button-dark-o"><?php esc_html_e( 'Remove Redirects', 'wds' ); ?></button>
65
- </div>
66
- <div class="wds-notice wds-notice-warning wds-redirects-unsaved-notice">
67
- <p><?php esc_html_e( "You've made changes to your Sitemap structure. You need to save the changes to make them live.", 'wds' ); ?></p>
68
- </div>
69
- <table class="wds-redirects-table wds-list-table">
70
- <thead>
71
- <tr>
72
- <th class="selector"><input type="checkbox" class="wds-checkbox" autocomplete="off" title=""/></th>
73
- <th class="source"><?php esc_html_e( 'Old URL', 'wds' ); ?></th>
74
- <th class="destination"><?php esc_html_e( 'New URL', 'wds' ); ?></th>
75
- <th class="type" colspan="2"><?php esc_html_e( 'Redirect Type', 'wds' ); ?></th>
76
- </tr>
77
- </thead>
78
- <tbody>
79
- <?php
80
- $redirection_index = 0;
81
- ?>
82
- <?php foreach ( $redirections as $source => $destination ) : ?>
83
- <?php
84
- $type = ! empty( $types[ $source ] ) ? $types[ $source ] : '';
85
 
86
- $this->_render( 'advanced-tools/advanced-tools-redirect-item', array(
87
- 'source' => esc_attr( $source ),
88
- 'destination' => esc_attr( $destination ),
89
- 'index' => esc_attr( $redirection_index ),
90
- 'string_permanent' => esc_html__( 'Permanent (301)', 'wds' ),
91
- 'string_temporary' => esc_html__( 'Temporary (302)', 'wds' ),
92
- 'string_options' => esc_html__( 'Options', 'wds' ),
93
- 'string_remove' => esc_html__( 'Remove', 'wds' ),
94
- 'maybe_permanent_selected' => selected( $type, 301, false ),
95
- 'maybe_temporary_selected' => selected( $type, 302, false ),
96
- ) );
97
- ?>
98
- <?php $redirection_index ++; ?>
99
- <?php endforeach; ?>
100
- </tbody>
101
- <tfoot>
102
- <tr class="wds-redirects-buttons-bottom">
103
- <td colspan="5">
104
- <button class="wds-add-redirect button button-dark"><?php esc_html_e( 'Add New', 'wds' ); ?></button>
105
- </td>
106
- </tr>
107
- </tfoot>
108
- </table>
109
  </div>
3
  $types = empty( $types ) ? array() : $types;
4
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
5
  $plugin_settings = Smartcrawl_Settings::get_specific_options( 'wds_settings_options' );
6
+ $redirection_index = 0;
 
 
 
 
7
  ?>
8
 
9
+ <input type="hidden" value="1" name="<?php echo esc_attr( $option_name ); ?>[save_redirects]"/>
10
+ <div class="wds-redirects-container">
11
+ <div id="wds-bulk-update-redirects"></div>
12
+ <div id="wds-add-redirect-form"></div>
13
+ <div id="wds-edit-redirect-form"></div>
 
 
 
 
 
 
 
14
 
15
+ <div class="sui-box-builder">
16
+ <div class="sui-box-builder-header">
17
+ <button class="wds-add-redirect sui-button sui-button-purple">
18
+ <i class="sui-icon-plus" aria-hidden="true"></i>
19
+ <?php esc_html_e( 'Add Redirect', 'wds' ); ?>
20
+ </button>
21
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ <div class="sui-box-builder-body <?php echo empty( $redirections ) ? 'wds-no-redirects' : ''; ?>">
24
+ <div class="wds-redirect-controls">
25
+ <label class="sui-checkbox">
26
+ <input type="checkbox"/>
27
+ <span aria-hidden="true"></span>
28
+ </label>
29
+ <button class="wds-bulk-update sui-button" disabled>
30
+ <?php esc_html_e( 'Bulk Update', 'wds' ); ?>
31
+ </button>
32
+ <button class="wds-bulk-remove sui-button" disabled>
33
+ <?php esc_html_e( 'Remove Redirects', 'wds' ); ?>
34
+ </button>
35
+ </div>
36
+
37
+ <div class="wds-redirects sui-builder-fields">
38
+ <?php foreach ( $redirections as $source => $destination ) {
39
+ $type = ! empty( $types[ $source ] ) ? $types[ $source ] : '';
40
+ $this->_render( 'advanced-tools/advanced-tools-redirect-item', array(
41
+ 'source' => esc_attr( $source ),
42
+ 'destination' => esc_attr( $destination ),
43
+ 'index' => $redirection_index,
44
+ 'selected_type' => intval( $type ),
45
+ ) );
46
+ $redirection_index ++;
47
+ } ?>
48
+ </div>
 
 
 
 
 
 
 
 
49
 
50
+ <button class="wds-add-redirect sui-button sui-button-dashed">
51
+ <i class="sui-icon-plus" aria-hidden="true"></i>
52
+ <?php esc_html_e( 'Add Redirect', 'wds' ); ?>
53
+ </button>
54
+
55
+ <p class="wds-no-redirects-message">
56
+ <small><?php esc_html_e( 'You can add as many redirects as you like. Add your first above!', 'wds' ); ?></small>
57
+ </p>
58
+ </div>
59
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  </div>
includes/admin/templates/advanced-tools/advanced-side-nav.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $active_tab = empty( $active_tab ) ? '' : $active_tab;
3
+
4
+ $this->_render( 'vertical-tabs-side-nav', array(
5
+ 'active_tab' => $active_tab,
6
+ 'tabs' => array(
7
+ array(
8
+ 'id' => 'tab_automatic_linking',
9
+ 'name' => esc_html__( 'Automatic Links', 'wds' ),
10
+ ),
11
+ array(
12
+ 'id' => 'tab_url_redirection',
13
+ 'name' => esc_html__( 'URL Redirection', 'wds' ),
14
+ ),
15
+ array(
16
+ 'id' => 'tab_moz',
17
+ 'name' => esc_html__( 'Moz', 'wds' ),
18
+ ),
19
+ ),
20
+ ) );
includes/admin/templates/advanced-tools/advanced-tools-redirect-item.php CHANGED
@@ -3,69 +3,52 @@
3
  // phpcs:ignoreFile
4
  $source = empty( $source ) ? '' : $source;
5
  $destination = empty( $destination ) ? '' : $destination;
 
6
  $index = empty( $index ) ? 0 : $index;
7
- $maybe_permanent_selected = empty( $maybe_permanent_selected ) ? '' : $maybe_permanent_selected;
8
- $maybe_temporary_selected = empty( $maybe_temporary_selected ) ? '' : $maybe_temporary_selected;
9
 
10
- $string_permanent = empty( $string_permanent ) ? '' : $string_permanent;
11
- $string_temporary = empty( $string_temporary ) ? '' : $string_temporary;
12
- $string_options = empty( $string_options ) ? '' : $string_options;
13
- $string_remove = empty( $string_remove ) ? '' : $string_remove;
14
-
15
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
16
  ?>
17
 
18
- <tr data-index="<?php echo $index; ?>">
19
- <td>
 
 
20
  <input type="checkbox"
21
- autocomplete="off"
22
- class="wds-checkbox"
23
- name="<?php echo $option_name; ?>[bulk][]"
24
- value="<?php echo $index; ?>" title=""/>
25
- </td>
 
 
 
 
 
 
 
 
 
26
 
27
- <td>
28
- <div class="wds-redirection_item-source">
29
- <input type="text"
30
- class="wds-field"
31
- placeholder="<?php esc_html_e( 'E.g. /cats', 'wds' ); ?>"
32
- value="<?php echo $source; ?>"
33
- name="<?php echo $option_name; ?>[urls][<?php echo $index; ?>][source]"
34
- title=""/>
35
- </div>
36
- </td>
37
 
38
- <td>
39
- <div class="wds-redirection_item-destination">
40
- <input id="<?php echo $option_name; ?>"
41
- name="<?php echo $option_name; ?>[urls][<?php echo $index; ?>][destination]"
42
- type="text"
43
- placeholder="<?php esc_html_e( 'E.g. /cats-new', 'wds' ); ?>"
44
- class="wds-field"
45
- value="<?php echo $destination; ?>"
46
- title=""/>
47
- </div>
48
- </td>
49
 
50
- <td>
51
- <div class="wds-redirection_item-type select-container select-container-no-style">
52
- <select title=""
53
- style="width: 100%;"
54
- name="<?php echo $option_name; ?>[urls][<?php echo $index; ?>][type]">
55
- <option <?php echo $maybe_permanent_selected; ?> value="301"><?php echo $string_permanent; ?></option>
56
- <option <?php echo $maybe_temporary_selected; ?> value="302"><?php echo $string_temporary; ?></option>
57
- </select>
58
- </div>
59
- </td>
60
 
61
- <td>
62
- <?php
63
- $this->_render( 'links-dropdown', array(
64
- 'label' => $string_options,
65
- 'links' => array(
66
- '#remove' => $string_remove,
67
- ),
68
- ) );
69
- ?>
70
- </td>
71
- </tr>
3
  // phpcs:ignoreFile
4
  $source = empty( $source ) ? '' : $source;
5
  $destination = empty( $destination ) ? '' : $destination;
6
+ $selected_type = empty( $selected_type ) ? '' : $selected_type;
7
  $index = empty( $index ) ? 0 : $index;
 
 
8
 
9
+ $option_name = 'wds_autolinks_options';
 
 
 
 
 
10
  ?>
11
 
12
+ <div data-index="<?php echo esc_attr( $index ); ?>"
13
+ class="sui-builder-field wds-redirect-item">
14
+
15
+ <label class="sui-checkbox">
16
  <input type="checkbox"
17
+ name="<?php echo esc_attr( $option_name ); ?>[bulk][]"
18
+ value="<?php echo esc_attr( $index ); ?>"/>
19
+ <span aria-hidden="true"></span>
20
+ </label>
21
+
22
+ <div class="sui-builder-field-label">
23
+ <span><?php echo esc_html( $source ); ?></span>
24
+ </div>
25
+
26
+ <small><?php echo esc_html( $destination ); ?></small>
27
+ <span class="wds-redirect-type-label wds-redirect-type-label-<?php echo esc_attr( $selected_type ); ?>">
28
+ <small><?php esc_html_e( 'Permanent', 'wds' ); ?></small>
29
+ <small><?php esc_html_e( 'Temporary', 'wds' ); ?></small>
30
+ </span>
31
 
32
+ <?php $this->_render( 'links-dropdown', array(
33
+ 'label' => esc_html__( 'Options', 'wds' ),
34
+ 'links' => array(
35
+ '#edit' => '<i class="sui-icon-pencil" aria-hidden="true"></i> ' . esc_html__( 'Edit', 'wds' ),
36
+ '#remove' => '<i class="sui-icon-trash" aria-hidden="true"></i> ' . esc_html__( 'Remove', 'wds' ),
37
+ ),
38
+ ) ); ?>
 
 
 
39
 
40
+ <input value="<?php echo esc_attr( $source ); ?>"
41
+ type="hidden"
42
+ class="wds-source-url"
43
+ name="<?php echo esc_attr( $option_name ); ?>[urls][<?php echo esc_attr( $index ); ?>][source]"/>
 
 
 
 
 
 
 
44
 
45
+ <input value="<?php echo esc_attr( $destination ); ?>"
46
+ type="hidden"
47
+ class="wds-destination-url"
48
+ name="<?php echo esc_attr( $option_name ); ?>[urls][<?php echo esc_attr( $index ); ?>][destination]"/>
 
 
 
 
 
 
49
 
50
+ <input value="<?php echo esc_attr( $selected_type ); ?>"
51
+ type="hidden"
52
+ class="wds-redirect-type"
53
+ name="<?php echo esc_attr( $option_name ); ?>[urls][<?php echo esc_attr( $index ); ?>][type]"/>
54
+ </div>
 
 
 
 
 
 
includes/admin/templates/advanced-tools/advanced-tools-settings.php CHANGED
@@ -1,157 +1,137 @@
1
- <div id="container" class="wrap wrap-wds wds-page wds-page-autolinks">
 
 
 
 
2
 
3
- <section id="header">
4
- <div class="actions">
5
- <a target="_blank" class="button button-small button-light actions-button"
6
- href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#chapter-5">
7
- <i class="wds-icon-academy"></i>
8
- <?php esc_html_e( 'View Documentation', 'wds' ); ?>
9
- </a>
10
- </div>
11
 
12
- <?php $this->_render( 'settings-message-top' ); ?>
13
- <h1><?php esc_html_e( 'Advanced Tools', 'wds' ); ?></h1>
14
- </section><!-- end header -->
 
15
 
16
- <div>
17
- <div class="cf"></div>
18
- <div class="vertical-tabs">
 
 
 
 
 
 
 
 
 
 
19
  <?php
20
  $autolinks_disabled_section = array(
21
  array(
22
  'section_template' => 'disabled-component-inner',
23
  'section_args' => array(
24
- 'content' => sprintf(
25
  '%s<br/>%s<br/>%s',
26
  _x( 'Configure SmartCrawl to automatically link certain key words to a page on your blog or even', 'part of a larger text', 'wds' ),
27
  _x( 'a whole new site all together. Internal linking can help boost SEO by giving search engines', 'part of a larger text', 'wds' ),
28
  _x( 'ample ways to index your site.', 'part of a larger text', 'wds' )
29
  ),
30
- 'image' => 'autolinking-disabled.png',
31
- 'component' => 'autolinks',
32
- 'premium_feature' => true,
33
- 'button_text' => __( 'Activate Keyword Linking', 'wds' ),
 
 
34
  ),
35
  ),
36
  );
37
 
38
  $autolinks_sections = array(
39
  array(
40
- 'section_title' => __( 'Automatic Links', 'wds' ),
41
- 'section_description' => __( 'SmartCrawl will look for keywords that match posts/pages around your website and automatically link them. Specify what post types you want to include in this tool, and what post types you want those to automatically link to.', 'wds' ),
42
  'section_template' => 'advanced-tools/advanced-section-automatic-linking',
43
  'section_args' => array(
44
  'insert' => $insert,
45
  'linkto' => $linkto,
46
  ),
47
  ),
48
- array(
49
- 'section_title' => __( 'Settings', 'wds' ),
50
- 'section_description' => __( 'Control the overall linking engine to work how you want it to.', 'wds' ),
51
- 'section_template' => 'advanced-tools/advanced-section-automatic-linking-settings',
52
- 'section_args' => array(
53
- 'additional_settings' => array(
54
- 'allow_empty_tax' => array(
55
- 'label' => __( 'Allow autolinks to empty taxonomies', 'wds' ),
56
- 'description' => __( 'Allows autolinking to taxonomies that have no posts assigned to them.', 'wds' ),
57
- ),
58
- 'excludeheading' => array(
59
- 'label' => __( 'Prevent linking in heading tags', 'wds' ),
60
- 'description' => __( 'Excludes headings from autolinking.', 'wds' ),
61
- ),
62
- 'onlysingle' => array(
63
- 'label' => __( 'Process only single posts and pages', 'wds' ),
64
- 'description' => __( 'Process only single posts and pages', 'wds' ),
65
- ),
66
- 'allowfeed' => array(
67
- 'label' => __( 'Process RSS feeds', 'wds' ),
68
- 'description' => __( 'Autolinking will also occur in RSS feeds.', 'wds' ),
69
- ),
70
- 'casesens' => array(
71
- 'label' => __( 'Case sensitive matching', 'wds' ),
72
- 'description' => __( 'Only autolink the exact string match.', 'wds' ),
73
- ),
74
- 'customkey_preventduplicatelink' => array(
75
- 'label' => __( 'Prevent duplicate links', 'wds' ),
76
- 'description' => __( 'Only link to a specific URL once per page/post.', 'wds' ),
77
- ),
78
- 'target_blank' => array(
79
- 'label' => __( 'Open links in new tab', 'wds' ),
80
- 'description' => __( 'Adds the target=“_blank” tag to links to open a new tab when clicked.', 'wds' ),
81
- ),
82
- 'rel_nofollow' => array(
83
- 'label' => __( 'Nofollow autolinks', 'wds' ),
84
- 'description' => __( 'Adds the nofollow meta tag to autolinks to prevent search engines following those URLs when crawling your website.', 'wds' ),
85
- ),
86
- ),
87
- ),
88
- ),
89
  );
90
 
91
- $autolinks_network_enabled = smartcrawl_is_allowed_tab( $_view['slug'] );
92
- $autolinks_locally_enabled = 'settings' === $_view['name'] || Smartcrawl_Settings::get_setting( $_view['name'] );
93
- $is_member = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member();
 
 
 
 
 
 
94
 
95
- if ( $autolinks_network_enabled ) {
 
 
96
 
97
- $autolinks_tab = array(
98
- 'tab_id' => 'tab_automatic_linking',
99
- 'tab_name' => __( 'Automatic Linking', 'wds' ),
100
- 'is_active' => 'tab_automatic_linking' === $active_tab,
101
- 'tab_sections' => $autolinks_locally_enabled && $is_member ? $autolinks_sections : $autolinks_disabled_section,
102
- 'before_output' => $this->_load( '_forms/autolinks', array(
103
- 'autolinks_network_enabled' => $autolinks_network_enabled,
104
- 'autolinks_locally_enabled' => $autolinks_locally_enabled,
105
- ) ),
106
- 'after_output' => '</form>',
107
- );
108
 
109
- if ( ! $autolinks_locally_enabled || ! $is_member ) {
110
- $autolinks_tab['button_text'] = false;
111
- }
 
112
 
113
- $this->_render( 'vertical-tab', $autolinks_tab );
114
- }
115
- ?>
116
 
117
- <?php
118
- $this->_render( 'vertical-tab', array(
119
- 'tab_id' => 'tab_url_redirection',
120
- 'tab_name' => __( 'URL Redirection', 'wds' ),
121
- 'is_active' => 'tab_url_redirection' === $active_tab,
122
- 'tab_sections' => array(
123
- array(
124
- 'section_description' => __( 'Automatically redirect traffic from one URL to another. Use this tool if you have changed a page’s URL and wish to keep traffic flowing to the new page.', 'wds' ),
125
- 'section_template' => 'advanced-tools/advanced-section-redirects',
126
- 'section_args' => array(
127
- 'redirections' => $redirections,
128
- 'types' => $redirection_types,
 
129
  ),
130
  ),
131
- ),
132
- 'before_output' => $this->_load( '_forms/redirections' ),
133
- 'after_output' => '</form>',
134
- ) );
135
- ?>
 
 
 
 
 
 
 
 
 
 
136
 
 
137
  <?php
138
  $this->_render( 'vertical-tab', array(
139
- 'tab_id' => 'tab_moz',
140
- 'tab_name' => __( 'Moz', 'wds' ),
141
- 'is_active' => 'tab_moz' === $active_tab,
142
- 'button_text' => false,
143
- 'tab_sections' => array(
144
  array(
145
  'section_template' => 'advanced-tools/advanced-section-moz',
146
  'section_args' => array(),
147
  ),
148
  ),
149
- 'before_output' => '<form method="post" class="wds-form">',
150
- 'after_output' => '</form>',
151
  ) );
152
  ?>
153
- </div>
154
  </div>
 
155
  <?php $this->_render( 'upsell-modal' ); ?>
156
 
157
  </div><!-- end wds-page-autolinks -->
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ $autolinks_enabled = Smartcrawl_Settings::get_setting( 'autolinks' ) && $is_member;
4
+ $form_action = $autolinks_enabled ? $_view['action_url'] : '';
5
+ ?>
6
 
7
+ <?php $this->_render( 'before-page-container' ); ?>
8
+ <div id="container" class="sui-wrap wrap wrap-wds wds-page wds-page-autolinks">
 
 
 
 
 
 
9
 
10
+ <?php $this->_render( 'page-header', array(
11
+ 'title' => esc_html__( 'Advanced Tools', 'wds' ),
12
+ 'documentation_chapter' => 'advanced-tools',
13
+ ) ); ?>
14
 
15
+ <div class="wds-vertical-tabs-container sui-row-with-sidenav">
16
+ <?php $this->_render( 'advanced-tools/advanced-side-nav', array(
17
+ 'active_tab' => $active_tab,
18
+ ) ); ?>
19
+
20
+ <form action='<?php echo esc_attr( $form_action ); ?>' method='post' class="wds-form">
21
+ <?php if ( $autolinks_enabled ) : ?>
22
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
23
+
24
+ <input type="hidden"
25
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
26
+ value="1">
27
+ <?php endif; ?>
28
  <?php
29
  $autolinks_disabled_section = array(
30
  array(
31
  'section_template' => 'disabled-component-inner',
32
  'section_args' => array(
33
+ 'content' => sprintf(
34
  '%s<br/>%s<br/>%s',
35
  _x( 'Configure SmartCrawl to automatically link certain key words to a page on your blog or even', 'part of a larger text', 'wds' ),
36
  _x( 'a whole new site all together. Internal linking can help boost SEO by giving search engines', 'part of a larger text', 'wds' ),
37
  _x( 'ample ways to index your site.', 'part of a larger text', 'wds' )
38
  ),
39
+ 'image' => 'graphic-autolinking-disabled.svg',
40
+ 'component' => 'autolinks',
41
+ 'premium_feature' => true,
42
+ 'upgrade_tag' => 'smartcrawl_autolinking_upgrade_button',
43
+ 'title_actions_left' => '',
44
+ 'button_text' => __( 'Activate', 'wds' ),
45
  ),
46
  ),
47
  );
48
 
49
  $autolinks_sections = array(
50
  array(
51
+ 'section_description' => esc_html__( 'SmartCrawl will look for keywords that match posts/pages around your website and automatically link them. Specify what post types you want to include in this tool, and what post types you want those to automatically link to.', 'wds' ),
 
52
  'section_template' => 'advanced-tools/advanced-section-automatic-linking',
53
  'section_args' => array(
54
  'insert' => $insert,
55
  'linkto' => $linkto,
56
  ),
57
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  );
59
 
60
+ $autolinks_tab = array(
61
+ 'tab_id' => 'tab_automatic_linking',
62
+ 'tab_name' => __( 'Automatic Linking', 'wds' ),
63
+ 'is_active' => 'tab_automatic_linking' === $active_tab,
64
+ 'title_actions_left' => 'advanced-tools/advanced-tools-title-pro-tag',
65
+ 'tab_sections' => $autolinks_enabled
66
+ ? $autolinks_sections
67
+ : $autolinks_disabled_section,
68
+ );
69
 
70
+ if ( ! $autolinks_enabled ) {
71
+ $autolinks_tab['button_text'] = false;
72
+ }
73
 
74
+ $this->_render( 'vertical-tab', $autolinks_tab );
75
+ ?>
76
+ </form>
 
 
 
 
 
 
 
 
77
 
78
+ <form action='<?php echo esc_attr( $_view['action_url'] ); ?>'
79
+ method='post'
80
+ class="wds-form">
81
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
82
 
83
+ <div id="tab_url_redirection"
84
+ class="wds-vertical-tab-section">
 
85
 
86
+ <?php
87
+ $this->_render( 'vertical-tab', array(
88
+ 'tab_id' => 'tab_url_redirection_main',
89
+ 'tab_name' => esc_html__( 'URL Redirection', 'wds' ),
90
+ 'is_active' => 'tab_url_redirection' === $active_tab,
91
+ 'tab_sections' => array(
92
+ array(
93
+ 'section_description' => esc_html__( 'Automatically redirect traffic from one URL to another. Use this tool if you have changed a page’s URL and wish to keep traffic flowing to the new page.', 'wds' ),
94
+ 'section_template' => 'advanced-tools/advanced-section-redirects',
95
+ 'section_args' => array(
96
+ 'redirections' => $redirections,
97
+ 'types' => $redirection_types,
98
+ ),
99
  ),
100
  ),
101
+ ) );
102
+
103
+ $this->_render( 'vertical-tab', array(
104
+ 'tab_id' => 'tab_url_redirection_settings',
105
+ 'tab_name' => esc_html__( 'Settings', 'wds' ),
106
+ 'is_active' => 'tab_url_redirection' === $active_tab,
107
+ 'tab_sections' => array(
108
+ array(
109
+ 'section_template' => 'advanced-tools/advanced-section-redirect-settings',
110
+ ),
111
+ ),
112
+ ) );
113
+ ?>
114
+ </div>
115
+ </form>
116
 
117
+ <form method="post" class="wds-moz-form wds-form">
118
  <?php
119
  $this->_render( 'vertical-tab', array(
120
+ 'tab_id' => 'tab_moz',
121
+ 'tab_name' => __( 'Moz', 'wds' ),
122
+ 'is_active' => 'tab_moz' === $active_tab,
123
+ 'button_text' => false,
124
+ 'tab_sections' => array(
125
  array(
126
  'section_template' => 'advanced-tools/advanced-section-moz',
127
  'section_args' => array(),
128
  ),
129
  ),
 
 
130
  ) );
131
  ?>
132
+ </form>
133
  </div>
134
+ <?php $this->_render( 'footer' ); ?>
135
  <?php $this->_render( 'upsell-modal' ); ?>
136
 
137
  </div><!-- end wds-page-autolinks -->
includes/admin/templates/advanced-tools/advanced-tools-title-pro-tag.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ if ( $is_member ) {
4
+ return;
5
+ }
6
+ $upgrade_url = 'https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_autolinking_pro_tag';
7
+ ?>
8
+ <a target="_blank" href="<?php echo esc_attr( $upgrade_url ); ?>">
9
+ <span class="sui-tag sui-tag-pro sui-tooltip"
10
+ data-tooltip="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>">
11
+ <?php esc_html_e( 'Pro', 'wds' ); ?>
12
+ </span>
13
+ </a>
includes/admin/templates/advanced-tools/underscore-add-redirect-form-body.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $source = empty( $source ) ? '' : $source;
3
+ $destination = empty( $destination ) ? '' : $destination;
4
+ $temporary_selected = empty( $temporary_selected ) ? '' : $temporary_selected;
5
+ $permanent_selected = empty( $permanent_selected ) ? '' : $permanent_selected;
6
+ $index = empty( $index ) ? 0 : $index;
7
+ ?>
8
+
9
+ <div class="wds-add-edit-fields">
10
+
11
+ <div class="sui-form-field">
12
+ <label class="sui-label"><?php esc_attr_e( 'Old URL', 'wds' ); ?></label>
13
+ <input class="sui-form-control wds-source-url"
14
+ value="<?php echo esc_attr( $source ); ?>"
15
+ placeholder="<?php esc_attr_e( 'E.g. /cats', 'wds' ); ?>" type="text"/>
16
+ </div>
17
+
18
+ <div class="sui-form-field">
19
+ <label class="sui-label"><?php esc_attr_e( 'New URL', 'wds' ); ?></label>
20
+ <input class="sui-form-control wds-destination-url"
21
+ value="<?php echo esc_attr( $destination ); ?>"
22
+ placeholder="<?php esc_attr_e( 'E.g. /cats-new', 'wds' ); ?>" type="text"/>
23
+ </div>
24
+
25
+ <div class="sui-form-field">
26
+ <label class="sui-label"><?php esc_html_e( 'Redirect Type', 'wds' ); ?></label>
27
+ <select class=" wds-redirect-type">
28
+ <option <?php echo $temporary_selected; ?> value="302"><?php esc_html_e( 'Temporary', 'wds' ); ?></option>
29
+ <option <?php echo $permanent_selected; ?> value="301"><?php esc_html_e( 'Permanent', 'wds' ); ?></option>
30
+ </select>
31
+ <span class="sui-description">
32
+ <?php esc_html_e( 'This tells search engines whether to keep indexing the old page, or replace it with the new page.', 'wds' ); ?>
33
+ </span>
34
+ </div>
35
+
36
+ <input type="hidden"
37
+ class="wds-redirect-index"
38
+ value="<?php echo esc_attr( $index ); ?>"/>
39
+ </div>
includes/admin/templates/advanced-tools/underscore-add-redirect-form-footer.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <button type="button" data-a11y-dialog-hide
2
+ class="sui-button sui-button-ghost">
3
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
4
+ </button>
5
+
6
+ <button type="button"
7
+ class="sui-button wds-action-button">
8
+ <i class="sui-icon-check" aria-hidden="true"></i>
9
+
10
+ <?php esc_html_e( 'Apply Redirect', 'wds' ); ?>
11
+ </button>
includes/admin/templates/advanced-tools/underscore-add-redirect-form.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-add-redirect-form',
4
+ 'title' => esc_html__( 'Add Redirect', 'wds' ),
5
+ 'description' => sprintf(
6
+ esc_html__( 'Allowed formats include relative URLs like %1$s or absolute URLs such as %2$s.', 'wds' ),
7
+ sprintf( '<strong>%s</strong>', esc_html__( '/cats', 'wds' ) ),
8
+ sprintf( '<strong>%s</strong>', esc_html__( 'https://website.com/cats', 'wds' ) )
9
+ ),
10
+ 'body_template' => 'advanced-tools/underscore-add-redirect-form-body',
11
+ 'footer_template' => 'advanced-tools/underscore-add-redirect-form-footer',
12
+ 'small' => true,
13
+ ) );
includes/admin/templates/advanced-tools/underscore-bulk-update-form-body.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wds-bulk-update-fields">
2
+
3
+ {{ if(indices) { }}
4
+ <div class="sui-form-field">
5
+ <label class="sui-label"><?php esc_attr_e( 'New URL', 'wds' ); ?></label>
6
+ <input class="sui-form-control"
7
+ placeholder="<?php esc_attr_e( 'E.g. /cats-new', 'wds' ); ?>" type="text"/>
8
+ </div>
9
+
10
+ <div class="sui-form-field">
11
+ <label class="sui-label"><?php esc_html_e( 'Redirect Type', 'wds' ); ?></label>
12
+ <select>
13
+ <option value="302"><?php esc_html_e( 'Temporary', 'wds' ); ?></option>
14
+ <option value="301"><?php esc_html_e( 'Permanent', 'wds' ); ?></option>
15
+ </select>
16
+ <span class="sui-description">
17
+ <?php esc_html_e( 'This tells search engines whether to keep indexing the old page, or replace it with the new page.', 'wds' ); ?>
18
+ </span>
19
+ </div>
20
+ {{ } else { }}
21
+ <?php $this->_render( 'notice', array(
22
+ 'message' => esc_html__( 'Please select some items to edit them.', 'wds' ),
23
+ ) ); ?>
24
+ {{ } }}
25
+
26
+ <input type="hidden" value="{{- indices }}"/>
27
+ </div>
includes/admin/templates/advanced-tools/underscore-bulk-update-form-footer.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <button type="button" data-a11y-dialog-hide
2
+ class="sui-button sui-button-ghost">
3
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
4
+ </button>
5
+
6
+ {{ if(indices) { }}
7
+ <button type="button"
8
+ class="sui-button wds-action-button">
9
+ <i class="sui-icon-check" aria-hidden="true"></i>
10
+
11
+ <?php esc_html_e( 'Apply', 'wds' ); ?>
12
+ </button>
13
+ {{ } }}
includes/admin/templates/advanced-tools/underscore-bulk-update-form.php CHANGED
@@ -1,37 +1,9 @@
1
- <dialog class="dev-overlay wds-modal wds-bulk-update-redirects-modal" id="wds-bulk-update-redirects" title="{{- Wds.l10n('redirects', 'Bulk Update') }}">
2
- <form class="wds-form">
3
-
4
- {{ if(indices) { }}
5
- <div class="wds-table-fields">
6
- <div class="label">
7
- <label class="wds-label">{{- Wds.l10n('redirects', 'New URL') }}</label>
8
- </div>
9
- <div class="fields">
10
- <input class="wds-field" title="" type="text"/>
11
- </div>
12
- </div>
13
-
14
- <div class="wds-table-fields">
15
- <div class="label">
16
- <label class="wds-label">{{- Wds.l10n('redirects', 'Redirect Type') }}</label>
17
- </div>
18
- <div class="fields">
19
- <select title="">
20
- <option value="301">{{- Wds.l10n('redirects', 'Permanent (301)') }}</option>
21
- <option value="302">{{- Wds.l10n('redirects', 'Temporary (302)') }}</option>
22
- </select>
23
- </div>
24
- </div>
25
- {{ } else { }}
26
- <p>{{- Wds.l10n('redirects', 'Please select some items to edit them.') }}</p>
27
- {{ } }}
28
-
29
- <input type="hidden" value="{{- indices }}"/>
30
- <div class="wds-box-footer">
31
- <button type="button" class="wds-cancel-button button button-dark-o"><?php esc_html_e( 'Cancel', 'wds' ); ?></button>
32
- {{ if(indices) { }}
33
- <button type="button" class="wds-action-button button"><?php esc_html_e( 'Update', 'wds' ); ?></button>
34
- {{ } }}
35
- </div>
36
- </form>
37
- </dialog>
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-bulk-update-redirects',
4
+ 'title' => esc_html__( 'Bulk Update', 'wds' ),
5
+ 'description' => esc_html__( 'Choose which bulk update actions you wish to apply. This will override the existing values for the selected items.', 'wds' ),
6
+ 'body_template' => 'advanced-tools/underscore-bulk-update-form-body',
7
+ 'footer_template' => 'advanced-tools/underscore-bulk-update-form-footer',
8
+ 'small' => true,
9
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/advanced-tools/underscore-edit-redirect-form.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-edit-redirect-form',
4
+ 'title' => esc_html__( 'Edit Redirect', 'wds' ),
5
+ 'description' => sprintf(
6
+ esc_html__( 'Allowed formats include relative URLs like %1$s or absolute URLs such as %2$s.', 'wds' ),
7
+ sprintf( '<strong>%s</strong>', esc_html__( '/cats', 'wds' ) ),
8
+ sprintf( '<strong>%s</strong>', esc_html__( 'https://website.com/cats', 'wds' ) )
9
+ ),
10
+ 'body_template' => 'advanced-tools/underscore-add-redirect-form-body',
11
+ 'body_template_args' => array(
12
+ 'source' => '{{- source }}',
13
+ 'destination' => '{{- destination }}',
14
+ 'index' => '{{- index }}',
15
+ 'temporary_selected' => "{{- selected_type == 302 ? 'selected' : '' }}",
16
+ 'permanent_selected' => "{{- selected_type == 301 ? 'selected' : '' }}",
17
+ ),
18
+ 'footer_template' => 'advanced-tools/underscore-add-redirect-form-footer',
19
+ 'small' => true,
20
+ ) );
includes/admin/templates/advanced-tools/underscore-keywords-custom.php CHANGED
@@ -2,17 +2,20 @@
2
  <div class="wds-keyword-pairs">
3
 
4
  {{ if (pairs) { }}
5
- <table class="wds-keyword-pairs-existing wds-list-table">
6
  <tr>
7
- <th>{{- Wds.l10n('keywords', 'Keyword') }}</th>
8
- <th colspan="3">{{- Wds.l10n('keywords', 'Auto-Linked URL') }}</th>
9
  </tr>
10
  {{= pairs }}
11
  </table>
12
  {{ } }}
13
 
14
  <div class="wds-keyword-pair-new">
15
- <button type="button" class="button button-dark">{{- Wds.l10n('keywords', 'Add New') }}</button>
 
 
 
16
  </div><!-- end wds-keyword-pair-new -->
17
 
18
  </div>
2
  <div class="wds-keyword-pairs">
3
 
4
  {{ if (pairs) { }}
5
+ <table class="wds-keyword-pairs-existing sui-table">
6
  <tr>
7
+ <th><?php esc_html_e( 'Keyword', 'wds' ); ?></th>
8
+ <th colspan="2"><?php esc_html_e( 'Auto-Linked URL', 'wds' ); ?></th>
9
  </tr>
10
  {{= pairs }}
11
  </table>
12
  {{ } }}
13
 
14
  <div class="wds-keyword-pair-new">
15
+ <button type="button" class="sui-button">
16
+ <i class="sui-icon-plus" aria-hidden="true"></i>
17
+ <?php esc_html_e('Add Link', 'wds'); ?>
18
+ </button>
19
  </div><!-- end wds-keyword-pair-new -->
20
 
21
  </div>
includes/admin/templates/advanced-tools/underscore-keywords-form-body.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignoreFile -- underscore template
2
+
3
+ $formats = sprintf(
4
+ esc_html__( 'Formats include relative (E.g. %1$s) or absolute URLs (E.g. %2$s or %2$s).', 'wds' ),
5
+ sprintf( '<strong>%s</strong>', esc_html__( '/cats', 'wds' ) ),
6
+ sprintf( '<strong>%s</strong>', esc_html__( 'www.website.com/cats', 'wds' ) ),
7
+ sprintf( '<strong>%s</strong>', esc_html__( 'https://website.com/cats', 'wds' ) )
8
+ );
9
+ ?>
10
+ <div class="wds-keyword-form">
11
+ <input type="hidden" class="wds-custom-idx" value="{{- idx }}"/>
12
+ <div class="sui-form-field">
13
+ <label class="sui-label">
14
+ <?php esc_html_e( 'Keyword group', 'wds' ); ?>
15
+ <span><?php esc_html_e( 'Usually related terms', 'wds' ); ?></span>
16
+ </label>
17
+ <input type="text" class="sui-form-control wds-custom-keywords" value="{{- keywords }}"
18
+ placeholder="<?php esc_attr_e( 'E.g. Cats, Kittens, Felines', 'wds' ); ?>"/>
19
+ </div>
20
+
21
+ <div class="sui-form-field">
22
+ <label class="sui-label">
23
+ <?php esc_html_e( 'Link URL', 'wds' ); ?>
24
+ <span><?php esc_html_e( 'Both internal and external links are supported', 'wds' ); ?></span>
25
+ </label>
26
+ <input type="text" class="sui-form-control wds-custom-url" value="{{- url }}"
27
+ placeholder="<?php esc_attr_e( 'E.g. /cats', 'wds' ); ?>"/>
28
+ <p class="sui-description">
29
+ <small><?php echo wp_kses_post( $formats ); ?></small>
30
+ </p>
31
+ </div>
32
+ </div>
includes/admin/templates/advanced-tools/underscore-keywords-form-footer.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignoreFile -- underscore template ?>
2
+ <button type="button" data-a11y-dialog-hide
3
+ class="sui-button sui-button-ghost">
4
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
5
+ </button>
6
+ <button type="button" class="wds-action-button sui-button">
7
+ {{- idx == 0 ? Wds.l10n('keywords', 'Add') : Wds.l10n('keywords', 'Update') }}
8
+ </button>
includes/admin/templates/advanced-tools/underscore-keywords-form.php CHANGED
@@ -1,32 +1,8 @@
1
- <?php // phpcs:ignoreFile -- underscore template ?>
2
- <dialog class="dev-overlay wds-modal wds-custom-keywords-modal" id="wds-custom-keywords" title="{{- idx == 0 ? Wds.l10n('keywords', 'Add Custom Keywords') : Wds.l10n('keywords', 'Update Custom Keywords') }}">
3
- <form class="wds-form">
4
- <input type="hidden" class="wds-custom-idx" value="{{- idx }}"/>
5
- <label class="wds-label">{{- Wds.l10n('keywords', 'Keyword group') }}</label>
6
- <p class="wds-label-description">{{- Wds.l10n('keywords', 'choose-your-keywords-and-url') }}</p>
7
-
8
- <div class="wds-table-fields wds-table-fields-stacked">
9
- <div class="label">
10
- <label class="wds-label">{{- Wds.l10n('keywords', 'Keyword group') }} <span>{{- Wds.l10n('keywords', '- Usually related terms') }}</span></label>
11
- </div>
12
- <div class="fields">
13
- <input type="text" class="wds-field wds-custom-keywords" value="{{- keywords }}" placeholder="{{- Wds.l10n('keywords', 'E.g. Cats, Kittens, Felines') }}"/>
14
- </div>
15
- </div>
16
-
17
- <div class="wds-table-fields wds-table-fields-stacked">
18
- <div class="label">
19
- <label class="wds-label">{{- Wds.l10n('keywords', 'Link URL') }} <span>{{- Wds.l10n('keywords', 'internal-external-links-supported') }}</span></label>
20
- </div>
21
- <div class="fields">
22
- <input type="text" class="wds-custom-url" value="{{- url }}" placeholder="{{- Wds.l10n('keywords', 'E.g. /cats') }}"/>
23
- <p class="wds-field-legend">{{= Wds.l10n('keywords', 'url-formats-explanation') }}</p>
24
- </div>
25
- </div>
26
-
27
- <div class="wds-box-footer">
28
- <button type="button" class="wds-cancel-button button button-dark-o">{{- Wds.l10n('keywords', 'Cancel') }}</button>
29
- <button type="button" class="wds-action-button button">{{- idx == 0 ? Wds.l10n('keywords', 'Add') : Wds.l10n('keywords', 'Update') }}</button>
30
- </div>
31
- </form>
32
- </dialog>
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-custom-keywords',
4
+ 'title' => esc_html__( 'Add Custom Keywords', 'wds' ),
5
+ 'description' => esc_html__( 'Choose your keywords, and then specify the URL to auto-link to.', 'wds' ),
6
+ 'body_template' => 'advanced-tools/underscore-keywords-form-body',
7
+ 'footer_template' => 'advanced-tools/underscore-keywords-form-footer',
8
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/advanced-tools/underscore-keywords-pairs.php CHANGED
@@ -1,21 +1,21 @@
1
  <tr class="wds-keyword-pair" data-idx="{{- idx }}">
2
  <td class="wds-pair-keyword">{{- keywords }}</td>
3
  <td class="wds-pair-url">{{- url }}</td>
 
 
 
 
4
  <td class="wds-pair-actions">
5
  {{ if (idx) { }}
6
  <?php
7
- $this->_render('links-dropdown', array(
8
- 'label' => "{{- Wds.l10n('keywords', 'Options') }}",
9
  'links' => array(
10
- '#edit' => "{{- Wds.l10n('keywords', 'Edit') }}",
11
- '#remove' => "{{- Wds.l10n('keywords', 'Remove') }}",
12
  ),
13
- ));
14
  ?>
15
  {{ } }}
16
  </td>
17
- <td class="wds-pair-hidden-fields">
18
- <input type="hidden" class="wds-pair-keyword-field" value="{{- keywords }}" />
19
- <input type="hidden" class="wds-pair-url-field" value="{{- url }}" />
20
- </td>
21
  </tr>
1
  <tr class="wds-keyword-pair" data-idx="{{- idx }}">
2
  <td class="wds-pair-keyword">{{- keywords }}</td>
3
  <td class="wds-pair-url">{{- url }}</td>
4
+ <td class="wds-pair-hidden-fields">
5
+ <input type="hidden" class="wds-pair-keyword-field" value="{{- keywords }}" />
6
+ <input type="hidden" class="wds-pair-url-field" value="{{- url }}" />
7
+ </td>
8
  <td class="wds-pair-actions">
9
  {{ if (idx) { }}
10
  <?php
11
+ $this->_render( 'links-dropdown', array(
12
+ 'label' => esc_html__( 'Options', 'wds' ),
13
  'links' => array(
14
+ '#edit' => '<i class="sui-icon-pencil" aria-hidden="true"></i> ' . esc_html__( 'Edit', 'wds' ),
15
+ '#remove' => '<i class="sui-icon-trash" aria-hidden="true"></i> ' . esc_html__( 'Delete', 'wds' ),
16
  ),
17
+ ) );
18
  ?>
19
  {{ } }}
20
  </td>
 
 
 
 
21
  </tr>
includes/admin/templates/advanced-tools/underscore-postlist-exclusion-item.php CHANGED
@@ -1,10 +1,16 @@
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <tr data-id="{{- id }}">
3
  {{ if (is_loaded) { }}
4
- <td class="wds-postlist-item-title">{{= title }}</td>
5
  <td class="wds-postlist-item-type">{{= type }}</td>
6
- <td class="wds-postlist-item-remove"><a href="#remove" class="wds-postlist-list-item-remove button button-dark-o button-small">{{= Wds.l10n('postlist', 'Remove') }}</a></td>
 
 
 
 
 
 
7
  {{ } else { }}
8
- <td colspan="3">Loading post {{= id }}...</td>
9
  {{ } }}
10
  </tr>
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <tr data-id="{{- id }}">
3
  {{ if (is_loaded) { }}
4
+ <td class="wds-postlist-item-title"><strong>{{= title }}</strong></td>
5
  <td class="wds-postlist-item-type">{{= type }}</td>
6
+ <td class="wds-postlist-item-remove">
7
+ <a href="#remove" class="wds-postlist-list-item-remove">
8
+ <button class="sui-button-icon" type="button">
9
+ <i class="sui-icon-trash" aria-hidden="true"></i>
10
+ </button>
11
+ </a>
12
+ </td>
13
  {{ } else { }}
14
+ <td colspan="3"><?php esc_html_e('Loading post', 'wds'); ?> {{= id }}...</td>
15
  {{ } }}
16
  </tr>
includes/admin/templates/advanced-tools/underscore-postlist-exclusion.php CHANGED
@@ -1,17 +1,23 @@
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <div class="wds-postlist-list wds-postlist-list-exclude">
3
  {{ if (loaded) { }}
4
- <table class="wds-postlist wds-list-table {{= (!!posts ? '' : 'wds-postlist-empty_list') }}">
5
  <tr>
6
- <th>{{= Wds.l10n('postlist', 'Post') }}</th>
7
- <th colspan="2">{{= Wds.l10n('postlist', 'Post Type') }}</th>
8
  </tr>
9
  {{= posts }}
10
  </table>
 
 
 
11
  {{ } else { }}
12
- <p><i>Loading posts, please hold on</i></p>
13
  {{ } }}
14
  <div class="wds-postlist-add-post">
15
- <a href="#wds-postlist-selector" rel="dialog" class="button button-dark">{{= Wds.l10n('postlist', 'Add Posts') }}</a>
 
 
 
16
  </div>
17
  </div>
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <div class="wds-postlist-list wds-postlist-list-exclude">
3
  {{ if (loaded) { }}
4
+ <table class="wds-postlist sui-table {{= (!!posts ? '' : 'wds-postlist-empty_list') }}">
5
  <tr>
6
+ <th><?php esc_html_e('Post', 'wds'); ?></th>
7
+ <th colspan="2"><?php esc_html_e('Post Type', 'wds'); ?></th>
8
  </tr>
9
  {{= posts }}
10
  </table>
11
+ <div class="wds-notice sui-notice {{= (!!posts ? '' : 'wds-postlist-empty_list') }}">
12
+ <p><?php esc_html_e("You haven't chosen to exclude any posts/pages.", 'wds'); ?></p>
13
+ </div>
14
  {{ } else { }}
15
+ <p><i><?php esc_html_e('Loading posts, please hold on', 'wds'); ?></i></p>
16
  {{ } }}
17
  <div class="wds-postlist-add-post">
18
+ <a href="#wds-postlist-selector" rel="dialog" class="sui-button">
19
+ <i class="sui-icon-plus" aria-hidden="true"></i>
20
+ <?php esc_html_e('Add Exclusion', 'wds'); ?>
21
+ </a>
22
  </div>
23
  </div>
includes/admin/templates/advanced-tools/underscore-postlist-selector-body.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $post_types = get_post_types( array(
3
+ 'public' => true,
4
+ 'show_ui' => true,
5
+ ) );
6
+ if ( isset( $post_types['attachment'] ) ) {
7
+ unset( $post_types['attachment'] );
8
+ }
9
+ ?>
10
+
11
+ <div class="sui-form-field">
12
+ <label for="wds-post-exclusion-type"
13
+ class="sui-label"><?php esc_html_e( 'Type', 'wds' ); ?></label>
14
+ <select id="wds-post-exclusion-type"
15
+ class="sui-select"
16
+ data-minimum-results-for-search="-1">
17
+ <?php foreach ( $post_types as $type_id => $type_name ): ?>
18
+ <option id="<?php echo esc_attr( $type_id ); ?>">
19
+ <?php echo esc_html( $type_name ); ?>
20
+ </option>
21
+ <?php endforeach; ?>
22
+ </select>
23
+ </div>
24
+
25
+ <div class="sui-form-field">
26
+ <label for="wds-post-exclusion-id"
27
+ class="sui-label"><?php esc_html_e( 'Post', 'wds' ); ?></label>
28
+
29
+ <select id="wds-post-exclusion-id"
30
+ class="sui-select"
31
+ multiple
32
+ data-placeholder="<?php esc_attr_e( 'Start typing to search ...', 'wds' ); ?>">
33
+ </select>
34
+ </div>
includes/admin/templates/advanced-tools/underscore-postlist-selector-footer.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <button type="button" data-a11y-dialog-hide
2
+ class="sui-button sui-button-ghost">
3
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
4
+ </button>
5
+ <button type="button" class="wds-action-button sui-button">
6
+ <?php esc_html_e( 'Add', 'wds' ); ?>
7
+ </button>
includes/admin/templates/advanced-tools/underscore-postlist-selector-list-item.php DELETED
@@ -1,21 +0,0 @@
1
- <?php // phpcs:ignoreFile -- underscore template ?>
2
- <li class="wds-postlist-list-item">
3
- <p class="group">
4
- <input
5
- id="{{- type }}-{{- id }}"
6
- class="wds-checkbox wds-checkbox-with-label wds-postlist-selector-list-item"
7
- value='{{- id }}'
8
- data-id="{{- id }}"
9
- data-title="{{- title }}"
10
- data-type="{{- type }}"
11
- data-date="{{- date }}"
12
- type='checkbox'
13
- {{ if (existing) { }}
14
- checked
15
- readonly
16
- disabled
17
- {{ } }}
18
- />
19
- <label for="{{- type }}-{{- id }}" class="wds-label wds-label-radio wds-label-inline wds-label-inline-right">{{= title }} ({{= date }})</label>
20
- </p>
21
- </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/advanced-tools/underscore-postlist-selector-list.php DELETED
@@ -1,45 +0,0 @@
1
- <?php // phpcs:ignoreFile -- underscore template ?>
2
- <section class="tab wds-postlist-list">
3
-
4
- <input type="radio" name="tab_postlist_group" id="tab_{{- tab }}" {{= checked }} value="{{-tab }}">
5
- <label for="tab_{{- tab }}">{{- tab_label }}</label>
6
-
7
- <div class="content wds-content-tabs">
8
-
9
- <h2 class="tab-title">{{= tab }}</h2>
10
-
11
- <div class="wds-content-tabs-inner">
12
- {{ if (is_loading) { }}
13
- <p>{{= Wds.l10n('postlist', 'Loading post items, please hold on') }}</p>
14
- {{ } else { }}
15
- <ul class="wds-postlist-list-items">
16
- {{= posts }}
17
- </ul>
18
- {{ } }}
19
-
20
- {{ if (meta.total > 1) { }}
21
- <div class="wds-postslist-list-pagination">
22
- <p class="group wds-group wds-group-field">
23
- <label for="wds-postslist-list-pagination-select" class="wds-label">{{= Wds.l10n('postlist', 'Jump to page') }}</label>
24
- <select id='wds-postslist-list-pagination-select' class="wds-select">
25
- {{ _.each(_.range(1, meta.total+1), function (idx) { }}
26
- <option
27
- value="{{- idx }}"
28
- {{ if (meta.page === idx) { }}
29
- selected="selected"
30
- {{ } }}
31
- >
32
- {{= idx }}
33
- </option>
34
- {{ }) }}
35
- </select>
36
- <span class="wds-field-legend">{{= Wds.l10n('postlist', 'Total Pages') }} {{= meta.total }}</span>
37
- </p>
38
- </div>
39
- {{ } }}
40
-
41
- </div><!-- end wds-content-tabs-inner -->
42
-
43
- </div><!-- end wds-content-tabs -->
44
-
45
- </section><!-- end wds-postlist-list -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/advanced-tools/underscore-postlist-selector.php CHANGED
@@ -1,14 +1,9 @@
1
- <dialog class="dev-overlay wds-modal wds-postlist-selector-modal" id="wds-postlist-selector" title="<?php esc_html_e( 'Choose Posts, Pages & Custom Post Types to exclude', 'wds' ); ?>">
2
- <div class="box-content wds-postlist-selector">
3
-
4
- <div class="vertical-tabs" id="content-type-excludes">
5
- {{= lists }}
6
- </div>
7
-
8
- </div>
9
-
10
- <div class="box-footer buttons">
11
- <button type="button" class="button button-cta-dark">Add to Excludes</button>
12
- </div>
13
-
14
- </dialog>
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-post-exclusion-selector',
4
+ 'title' => esc_html__( 'Add Exclusion', 'wds' ),
5
+ 'description' => esc_html__( 'Choose which post you want to exclude.', 'wds' ),
6
+ 'body_template' => 'advanced-tools/underscore-postlist-selector-body',
7
+ 'footer_template' => 'advanced-tools/underscore-postlist-selector-footer',
8
+ 'small' => true,
9
+ ) );
 
 
 
 
 
includes/admin/templates/advanced-tools/underscore-redirect-item.php CHANGED
@@ -1,13 +1,8 @@
1
  <?php
2
 
3
- $this->_render('advanced-tools/advanced-tools-redirect-item', array(
4
- 'source' => '{{- source }}',
5
- 'destination' => '{{- destination }}',
6
- 'index' => '{{- index }}',
7
- 'string_permanent' => "{{- Wds.l10n('redirects', 'Permanent (301)') }}",
8
- 'string_temporary' => "{{- Wds.l10n('redirects', 'Temporary (302)') }}",
9
- 'string_options' => "{{- Wds.l10n('redirects', 'Options') }}",
10
- 'string_remove' => "{{- Wds.l10n('redirects', 'Remove') }}",
11
- 'maybe_permanent_selected' => "{{- selected_type == 301 ? 'selected=\"selected\"' : '' }}",
12
- 'maybe_temporary_selected' => "{{- selected_type == 302 ? 'selected=\"selected\"' : '' }}",
13
- ));
1
  <?php
2
 
3
+ $this->_render( 'advanced-tools/advanced-tools-redirect-item', array(
4
+ 'source' => '{{- source }}',
5
+ 'destination' => '{{- destination }}',
6
+ 'selected_type' => "{{- selected_type }}",
7
+ 'index' => '{{- index }}',
8
+ ) );
 
 
 
 
 
includes/admin/templates/before-page-container.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php // phpcs:ignoreFile ?>
2
+ <!-- Dummy elements to throw off admin notices that would have had styling conflicts if printed inside sui-wrap -->
3
+ <div class="wrap"><h1></h1></div>
includes/admin/templates/checkup/checkup-checkup-results.php CHANGED
@@ -1,83 +1,36 @@
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
  $results = $service->result();
4
- $show_upsell_message = isset( $show_upsell_message ) ? $show_upsell_message : true;
 
 
 
5
  ?>
6
 
7
- <?php if ( ! empty( $results['error'] ) ) : ?>
8
- <!--
9
- We have encountered an error. So let's show that.
10
- -->
11
- <div class="wds-notice wds-notice-error">
12
- <p><?php echo esc_html( $results['error'] ); ?></p>
13
- </div>
14
- <?php endif; ?>
15
-
16
- <?php if ( ! empty( $results['items'] ) ) { ?>
17
  <p><?php esc_html_e( 'Here are your outstanding SEO issues. We recommend actioning as many as possible to ensure your site is as search engine and social media friendly as possible.', 'wds' ); ?></p>
18
- <!--
19
- This is where we store the actual result items.
20
- Let's iterate through them.
21
- -->
22
- <div class="wds-accordion">
23
- <?php foreach ( $results['items'] as $idx => $item ) : ?>
24
- <?php
25
- $item_id = "wds-checkup-item-{$idx}";
26
- $type_class = ! empty( $item['type'] )
27
- ? sanitize_html_class( $item['type'] )
28
- : '';
29
- $custom_class = ! empty( $item['class'] )
30
- ? sanitize_html_class( $item['class'] )
31
- : '';
32
- $style_class_map = array(
33
- 'ok' => 'wds-check-success',
34
- 'info' => 'wds-check-invalid',
35
- 'warning' => 'wds-check-warning',
36
- 'critical' => 'wds-check-error',
37
- );
38
- $style_class = isset( $style_class_map[ $item['type'] ] ) ? $style_class_map[ $item['type'] ] : '';
39
- $details = ! empty( $item['tooltip'] ) ? $item['tooltip'] : '';
40
- $title = ! empty( $item['title'] ) ? $item['title'] : '';
41
- $body = ! empty( $item['body'] ) ? $item['body'] : '';
42
- $fix = ! empty( $item['fix'] ) ? $item['fix'] : '';
43
- ?>
44
- <div
45
- class="wds-accordion-section wds-check-item <?php echo esc_attr( $type_class ); ?> <?php echo esc_attr( $custom_class ); ?> <?php echo esc_attr( $style_class ); ?>"
46
- id="<?php echo esc_attr( $item_id ); ?>">
47
- <div class="wds-accordion-handle">
48
- <?php echo esc_html( $title ); ?>
49
- </div>
50
- <div class="wds-accordion-content">
51
- <?php if ( $body || $fix ) : ?>
52
- <div class="wds-recommendation">
53
- <strong><?php esc_html_e( 'Recommendation', 'wds' ); ?></strong>
54
 
55
- <?php echo wp_kses_post( $body ); ?>
56
- <?php echo wp_kses_post( $fix ); ?>
57
- </div>
58
- <?php endif; ?>
59
-
60
- <?php if ( $details ) : ?>
61
- <div class="wds-more-info">
62
- <strong><?php esc_html_e( 'More Info', 'wds' ); ?></strong>
63
- <p><?php echo esc_html( $details ); ?></p>
64
- </div>
65
- <?php endif; ?>
66
- </div>
67
- </div>
68
- <?php endforeach; ?>
69
- </div>
70
- <?php if ( ! $service->is_member() && $show_upsell_message ) { ?>
71
- <?php
72
- $this->_render( 'mascot-message', array(
73
- 'key' => 'seo-checkup-upsell',
74
- 'dismissible' => false,
75
- 'message' => sprintf(
76
- '%s <a href="#upgrade-to-pro">%s</a>',
77
- esc_html__( 'Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus automated scheduled reports to always stay on top of any issues. These features are included in a WPMU DEV membership along with 100+ plugins, 24/7 support and lots of handy site management tools.', 'wds' ),
78
- esc_html__( '- Try it all FREE today', 'wds' )
79
  ),
80
  ) );
81
- ?>
82
- <?php } ?>
83
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
  $results = $service->result();
4
+ $counts = smartcrawl_get_array_value( $results, 'counts' );
5
+ $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
6
+ $has_errors = smartcrawl_get_array_value( $results, 'error' );
7
+ $has_items = smartcrawl_get_array_value( $results, 'items' );
8
  ?>
9
 
10
+ <?php if ( $has_items && ! $has_errors ): ?>
 
 
 
 
 
 
 
 
 
11
  <p><?php esc_html_e( 'Here are your outstanding SEO issues. We recommend actioning as many as possible to ensure your site is as search engine and social media friendly as possible.', 'wds' ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ <?php
14
+ if ( $issue_count > 0 ) {
15
+ $this->_render( 'notice', array(
16
+ 'message' => sprintf(
17
+ _n( 'You have %d SEO recommendation.', 'You have %d SEO recommendations.', $issue_count, 'wds' ),
18
+ $issue_count
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  ),
20
  ) );
21
+ } else {
22
+ $this->_render( 'notice', array(
23
+ 'message' => esc_html__( "You don't have any SEO checkup recommendations – Google is loving it.", 'wds' ),
24
+ 'class' => 'sui-notice-success',
25
+ ) );
26
+ }
27
+ ?>
28
+ <?php endif; ?>
29
+
30
+ <?php $this->_render( 'checkup/checkup-results-inner', array( 'results' => $results ) ); ?>
31
+
32
+ <?php if ( $has_items && ! $has_errors ): ?>
33
+ <p class="wds-centre">
34
+ <small><?php esc_html_e( 'Remember, these are recommendations only to help Google index your content effectively. SEO requires constant tweaking and improvement alongside good quality content on your website.', 'wds' ); ?></small>
35
+ </p>
36
+ <?php endif; ?>
includes/admin/templates/checkup/checkup-checkup-running.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
-
3
- $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
4
- $percentage = $service->status();
5
- $progress = (int) $percentage;
6
-
7
- if ( $progress > 100 ) {
8
- $progress = 100;
9
- }
10
-
11
- $this->_render( 'progress-bar', array(
12
- 'progress' => $progress,
13
- ) );
14
- ?>
15
-
16
- <div class="wds-checkup-progress-notice">
17
- <?php $this->_render( 'progress-notice' ); ?>
18
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/checkup/checkup-checkup.php CHANGED
@@ -3,11 +3,18 @@ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
  ?>
4
 
5
  <div class="wds-report">
6
- <?php
7
- if ( $service->in_progress() ) {
8
- $this->_render( 'checkup/checkup-checkup-running' );
9
- } else {
10
- $this->_render( 'checkup/checkup-checkup-results' );
11
- }
12
- ?>
 
 
 
 
 
 
 
13
  </div>
3
  ?>
4
 
5
  <div class="wds-report">
6
+ <?php $this->_render( 'checkup/checkup-checkup-results' ); ?>
7
+ <?php if ( ! $service->is_member() ) { ?>
8
+ <?php
9
+ $this->_render( 'mascot-message', array(
10
+ 'key' => 'seo-checkup-upsell',
11
+ 'dismissible' => false,
12
+ 'message' => sprintf(
13
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_seocheckup_checkup_upsell_notice">%s</a>',
14
+ esc_html__( 'Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus automated scheduled reports to always stay on top of any issues. These features are included in a WPMU DEV membership along with 100+ plugins, 24/7 support and lots of handy site management tools.', 'wds' ),
15
+ esc_html__( '- Try it all FREE today', 'wds' )
16
+ ),
17
+ ) );
18
+ ?>
19
+ <?php } ?>
20
  </div>
includes/admin/templates/checkup/checkup-get-started.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $in_progress = empty( $in_progress ) ? false : $in_progress;
3
+ ?>
4
+ <div class="sui-box">
5
+ <div class="sui-box-header">
6
+ <h2 class="sui-box-title"><?php esc_html_e( 'Get Started', 'wds' ); ?></h2>
7
+ </div>
8
+ <div class="sui-box-body">
9
+ <?php $this->_render( 'checkup/checkup-no-data', array(
10
+ 'in_progress' => $in_progress,
11
+ ) ); ?>
12
+ </div>
13
+ </div>
includes/admin/templates/checkup/checkup-header-actions.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
+ $checkup_url = Smartcrawl_Checkup_Settings::checkup_url();
4
+ $in_progress = empty( $in_progress ) ? false : $in_progress;
5
+ ?>
6
+ <a href="<?php echo esc_attr( $checkup_url ); ?>"
7
+ class="sui-button sui-button-blue <?php echo $in_progress ? 'disabled' : ''; ?>">
8
+ <i class="sui-icon-plus" aria-hidden="true"></i>
9
+
10
+ <?php esc_html_e( 'Run checkup', 'wds' ); ?>
11
+ </a>
includes/admin/templates/checkup/checkup-no-data.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $in_progress = empty( $in_progress ) ? false : $in_progress;
3
+
4
+ $this->_render( 'disabled-component-inner', array(
5
+ 'content' => sprintf(
6
+ '%s<br/>%s',
7
+ esc_html__( 'SmartCrawl will look at your website from the perspective of a search engine (like Google)', 'wds' ),
8
+ esc_html__( 'and then give you a detailed SEO report with recommendations for improvements.', 'wds' )
9
+ ),
10
+ 'image' => 'seocheckup-disabled.svg',
11
+ 'button_icon' => 'sui-icon-plus',
12
+ 'button_text' => esc_html__( 'Run Checkup', 'wds' ),
13
+ 'button_url' => Smartcrawl_Checkup_Settings::checkup_url(),
14
+ 'button_disabled' => $in_progress,
15
+ 'premium_feature' => false,
16
+ ) );
includes/admin/templates/checkup/checkup-progress-modal-body.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+
4
+ $this->_render( 'progress-bar', array(
5
+ 'progress' => 0,
6
+ ) );
7
+
8
+ if ( ! $is_member ) {
9
+ $this->_render( 'mascot-message', array(
10
+ 'dismissible' => false,
11
+ 'image_name' => 'graphic-seocheckup-modal',
12
+ 'message' => sprintf(
13
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_seocheckup_modal_upsell_notice">%s</a>',
14
+ esc_html__( 'Did you know with SmartCrawl Pro you can schedule automated SEO checkups and send whitelabel email reports direct to yours and your clients inboxes?', 'wds' ),
15
+ esc_html__( '- Try SmartCrawl Pro FREE today!', 'wds' )
16
+ ),
17
+ ) );
18
+ }
includes/admin/templates/checkup/checkup-progress-modal-header.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php // phpcs:ignoreFile
includes/admin/templates/checkup/checkup-progress-modal.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php $this->_render( 'modal', array(
2
+ 'id' => 'wds-checkup-progress-modal',
3
+ 'title' => esc_html__( 'Checkup in progress', 'wds' ),
4
+ 'description' => esc_html__( "We're performing a full SEO checkup of your website, please be patient …", 'wds' ),
5
+ 'header_actions_template' => 'checkup/checkup-progress-modal-header',
6
+ 'body_template' => 'checkup/checkup-progress-modal-body',
7
+ ) );
includes/admin/templates/checkup/checkup-reporting-dow-select.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
4
+ $disabled = $is_member ? '' : 'disabled';
5
+
6
+ $monday = strtotime( 'this Monday' );
7
+ $checkup_dow = isset( $_view['options']['checkup-dow'] ) ? $_view['options']['checkup-dow'] : false;
8
+ ?>
9
+
10
+ <label for="wds-checkup-dow"
11
+ class="sui-label"><?php esc_html_e( 'Day of the week', 'wds' ); ?></label>
12
+
13
+ <select <?php echo esc_attr( $disabled ); ?>
14
+ class="sui-select"
15
+ id="wds-checkup-dow"
16
+ data-minimum-results-for-search="-1"
17
+ name="<?php echo esc_attr( $option_name ); ?>[checkup-dow]">
18
+
19
+ <?php foreach ( range( 0, 6 ) as $dow ) : ?>
20
+ <option value="<?php echo esc_attr( $dow ); ?>" <?php selected( $dow, $checkup_dow ); ?>>
21
+ <?php echo esc_html( date_i18n( 'l', $monday + ( $dow * DAY_IN_SECONDS ) ) ); ?>
22
+ </option>
23
+ <?php endforeach; ?>
24
+ </select>
includes/admin/templates/checkup/checkup-reporting-schedule.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $checkup_freq = empty( $checkup_freq ) ? false : $checkup_freq;
3
+ $cron = Smartcrawl_Controller_Cron::get();
4
+
5
+ // This does the actual rescheduling
6
+ $cron->set_up_schedule();
7
+ $is_member = empty( $_view['is_member'] ) ? false : true;
8
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
9
+ $disabled = $is_member ? '' : 'disabled';
10
+ ?>
11
+ <div class="sui-side-tabs sui-tabs">
12
+ <div data-tabs>
13
+ <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
14
+ <div data-frequency="<?php echo esc_attr( $key ); ?>"
15
+ class="<?php echo $key === $checkup_freq ? 'active' : ''; ?>">
16
+ <?php echo esc_html( $label ); ?>
17
+ </div>
18
+ <?php endforeach; ?>
19
+ </div>
20
+
21
+ <div data-panes>
22
+ <div class="wds-single-pane">
23
+ <label style="display: none;">
24
+ <select <?php echo esc_attr( $disabled ); ?>
25
+ class="none-sui wds-conditional-parent"
26
+ id="wds-checkup-frequency"
27
+ data-minimum-results-for-search="-1"
28
+ name="<?php echo esc_attr( $option_name ); ?>[checkup-frequency]">
29
+
30
+ <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
31
+ <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $checkup_freq ); ?>>
32
+ <?php echo esc_html( $label ); ?>
33
+ </option>
34
+ <?php endforeach; ?>
35
+ </select>
36
+ </label>
37
+
38
+ <div class="sui-row">
39
+ <div class="sui-col wds-conditional-child"
40
+ data-parent="wds-checkup-frequency"
41
+ data-parent-val="weekly,monthly">
42
+
43
+ <div class="sui-form-field">
44
+ <?php $this->_render( 'checkup/checkup-reporting-dow-select' ); ?>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="sui-col">
49
+ <div class="sui-form-field">
50
+ <?php $this->_render( 'checkup/checkup-reporting-tod-select' ); ?>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
includes/admin/templates/checkup/checkup-reporting-title-pro-tag.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ if ( $is_member ) {
4
+ return;
5
+ }
6
+ $upgrade_url = 'https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_seocheckup_reporting_pro_tag';
7
+ ?>
8
+ <a target="_blank" href="<?php echo esc_attr( $upgrade_url ); ?>">
9
+ <span class="sui-tag sui-tag-pro sui-tooltip"
10
+ data-tooltip="<?php esc_attr_e( 'Upgrade to Pro to schedule automated checkups and email reports', 'wds' ); ?>">
11
+ <?php esc_html_e( 'Pro', 'wds' ); ?>
12
+ </span>
13
+ </a>
includes/admin/templates/checkup/checkup-reporting-tod-select.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
4
+ $disabled = $is_member ? '' : 'disabled';
5
+
6
+ $midnight = strtotime( 'today' );
7
+ $checkup_tod = isset( $_view['options']['checkup-tod'] ) ? $_view['options']['checkup-tod'] : false;
8
+ ?>
9
+
10
+ <label for="wds-checkup-tod"
11
+ class="sui-label"><?php esc_html_e( 'Time of day', 'wds' ); ?></label>
12
+
13
+ <select <?php echo esc_attr( $disabled ); ?>
14
+ class="sui-select"
15
+ id="wds-checkup-tod"
16
+ data-minimum-results-for-search="-1"
17
+ name="<?php echo esc_attr( $option_name ); ?>[checkup-tod]">
18
+
19
+ <?php foreach ( range( 0, 23 ) as $tod ) : ?>
20
+ <option value="<?php echo esc_attr( $tod ); ?>" <?php selected( $tod, $checkup_tod ); ?>>
21
+ <?php echo esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $tod * HOUR_IN_SECONDS ) ) ); ?>
22
+ </option>
23
+ <?php endforeach; ?>
24
+ </select>
includes/admin/templates/checkup/checkup-reporting.php CHANGED
@@ -1,32 +1,47 @@
1
  <?php
2
- $cron = Smartcrawl_Controller_Cron::get();
3
-
4
- // This does the actual rescheduling
5
- $cron->set_up_schedule();
6
- $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
7
-
8
- $disabled = ! $service->is_member() ? 'disabled' : '';
9
- $option_name = $_view['option_name'];
10
  $toggle_field_name = $option_name . '[checkup-cron-enable]';
11
- $checkup_cron_enabled = $_view['options']['checkup-cron-enable'];
 
 
 
 
 
12
  ?>
13
 
14
- <?php if ( ! $service->is_member() ) : ?>
15
- <div class="wds-obfuscate-section"></div>
16
- <?php endif; ?>
 
17
 
18
- <div class="wds-table-fields wds-toggleable">
19
- <div class="label">
20
- <label class="wds-label"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  for="<?php echo esc_attr( $toggle_field_name ); ?>">
22
 
23
  <?php esc_html_e( 'Schedule automatic checkups', 'wds' ); ?>
24
  </label>
25
- <p class="wds-label-description">
26
- <?php esc_html_e( 'Configure SmartCrawl to automatically email you a comprehensive SEO report for this website.', 'wds' ); ?>
27
- </p>
28
  </div>
29
- <div class="fields wds-toggleable <?php echo $checkup_cron_enabled ? '' : 'inactive'; ?>">
30
  <?php
31
  $this->_render( 'toggle-item', array(
32
  'field_name' => $toggle_field_name,
@@ -35,97 +50,40 @@ $checkup_cron_enabled = $_view['options']['checkup-cron-enable'];
35
  'item_label' => esc_html__( 'Enable regular checkups', 'wds' ),
36
  ) );
37
  ?>
38
- <div class="wds-toggleable-inside wds-toggleable-inside-box">
39
- <div class="wds-table-fields wds-table-fields-stacked">
40
- <div class="label">
41
- <label for="wds-checkup-frequency"
42
- class="wds-label"><?php esc_html_e( 'Frequency', 'wds' ); ?></label>
43
- </div>
44
- <div class="fields">
45
- <select <?php echo esc_attr($disabled); ?>
46
- style="width: 100%"
47
- class="select-container wds-conditional-parent"
48
- id="wds-checkup-frequency"
49
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[checkup-frequency]">
50
-
51
- <?php $checkup_freq = isset( $_view['options']['checkup-frequency'] ) ? $_view['options']['checkup-frequency'] : false; ?>
52
 
53
- <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
54
- <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $checkup_freq ); ?>>
55
- <?php echo esc_html( $label ); ?>
56
- </option>
57
- <?php endforeach; ?>
58
- </select>
59
- </div>
60
  </div>
61
 
62
- <div class="wds-table-fields wds-table-fields-stacked wds-conditional-child"
63
- data-parent="wds-checkup-frequency"
64
- data-parent-val="weekly,monthly">
65
-
66
- <div class="label">
67
- <label for="wds-checkup-dow"
68
- class="wds-label"><?php esc_html_e( 'Day of the week', 'wds' ); ?></label>
69
- </div>
70
- <div class="fields">
71
- <select <?php echo esc_attr($disabled); ?>
72
- style="width: 100%"
73
- class="select-container"
74
- id="wds-checkup-dow"
75
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[checkup-dow]">
76
-
77
- <?php $monday = strtotime( 'this Monday' ); ?>
78
- <?php $checkup_dow = isset( $_view['options']['checkup-dow'] ) ? $_view['options']['checkup-dow'] : false; ?>
79
- <?php foreach ( range( 0, 6 ) as $dow ) : ?>
80
- <option value="<?php echo esc_attr( $dow ); ?>" <?php selected( $dow, $checkup_dow ); ?>>
81
- <?php echo esc_html( date_i18n( 'l', $monday + ( $dow * DAY_IN_SECONDS ) ) ); ?>
82
- </option>
83
- <?php endforeach; ?>
84
- </select>
85
- </div>
86
- </div>
87
 
88
- <div class="wds-table-fields wds-table-fields-stacked">
89
- <div class="label">
90
- <label for="wds-checkup-tod" class="wds-label"><?php esc_html_e( 'Time of day', 'wds' ); ?></label>
91
- </div>
92
- <div class="fields">
93
-
94
- <select <?php echo esc_attr($disabled); ?>
95
- style="width: 100%"
96
- class="select-container"
97
- id="wds-checkup-tod"
98
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[checkup-tod]">
99
-
100
- <?php $midnight = strtotime( 'today' ); ?>
101
- <?php $checkup_tod = isset( $_view['options']['checkup-tod'] ) ? $_view['options']['checkup-tod'] : false; ?>
102
- <?php foreach ( range( 0, 23 ) as $tod ) : ?>
103
- <option value="<?php echo esc_attr( $tod ); ?>" <?php selected( $tod, $checkup_tod ); ?>>
104
- <?php echo esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $tod * HOUR_IN_SECONDS ) ) ); ?>
105
- </option>
106
- <?php endforeach; ?>
107
- </select>
108
- </div>
109
- </div>
110
  </div>
111
  </div>
112
  </div>
113
 
114
- <div class="wds-table-fields wds-separator-top">
115
- <div class="label">
116
- <label class="wds-label"><?php esc_html_e( 'Email recipients', 'wds' ); ?></label>
117
- <p class="wds-label-description">
118
- <?php esc_html_e( 'Choose which of your website’s users will receive the SEO report.', 'wds' ); ?>
119
- </p>
120
- </div>
121
- <div class="fields">
122
- <?php
123
- $this->_render( 'user-search', array(
124
- 'users' => ( isset( $_view['options']['email-recipients'] ) ? $_view['options']['email-recipients'] : array() ),
125
- 'option_name' => $option_name,
126
- 'users_key' => 'email-recipients',
127
- 'new_user_key' => 'new-user',
128
- ) );
129
- ?>
130
- </div>
131
- </div>
1
  <?php
2
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
 
 
 
 
 
 
 
3
  $toggle_field_name = $option_name . '[checkup-cron-enable]';
4
+ $is_member = empty( $_view['is_member'] ) ? false : true;
5
+ $checkup_cron_enabled = empty( $checkup_cron_enabled ) ? false : true;
6
+ $checkup_freq = isset( $_view['options']['checkup-frequency'] ) ? $_view['options']['checkup-frequency'] : false;
7
+ $email_recipients = empty( $email_recipients ) ? array() : $email_recipients;
8
+ $cron = Smartcrawl_Controller_Cron::get();
9
+ $frequencies = $cron->get_frequencies();
10
  ?>
11
 
12
+ <div class="wds-upsell-tab-description">
13
+ <div>
14
+ <p><?php esc_html_e( 'Set up SmartCrawl to automatically run a comprehensive SEO Checkup daily, weekly or monthly and receive an email report to as many recipients as you like.', 'wds' ); ?></p>
15
+ </div>
16
 
17
+ <?php if ( $checkup_cron_enabled && ! empty( $email_recipients ) ): ?>
18
+ <?php $this->_render( 'notice', array(
19
+ 'message' => sprintf(
20
+ _n(
21
+ 'Automatic checkups are enabled and sending %1$s to %2$d recipient.',
22
+ 'Automatic checkups are enabled and sending %1$s to %2$d recipients.',
23
+ count( $email_recipients ),
24
+ 'wds'
25
+ ),
26
+ smartcrawl_get_array_value( $frequencies, $checkup_freq ),
27
+ count( $email_recipients )
28
+ ),
29
+ 'class' => 'sui-notice-info',
30
+ ) ); ?>
31
+ <?php endif; ?>
32
+ </div>
33
+ <div class="sui-box-settings-row <?php echo $is_member ? '' : 'sui-disabled'; ?>">
34
+ <div class="sui-box-settings-col-1">
35
+ <label class="sui-settings-label"
36
  for="<?php echo esc_attr( $toggle_field_name ); ?>">
37
 
38
  <?php esc_html_e( 'Schedule automatic checkups', 'wds' ); ?>
39
  </label>
40
+ <span class="sui-description">
41
+ <?php esc_html_e( 'Enable automated SEO reports for this website.', 'wds' ); ?>
42
+ </span>
43
  </div>
44
+ <div class="sui-box-settings-col-2 wds-toggleable <?php echo $checkup_cron_enabled ? '' : 'inactive'; ?>">
45
  <?php
46
  $this->_render( 'toggle-item', array(
47
  'field_name' => $toggle_field_name,
50
  'item_label' => esc_html__( 'Enable regular checkups', 'wds' ),
51
  ) );
52
  ?>
53
+ <div class="wds-toggleable-inside sui-border-frame sui-toggle-content">
54
+ <small><strong><?php esc_html_e( 'Recipients', 'wds' ); ?></strong></small>
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
+ <div class="wds-recipients-notice <?php echo empty( $email_recipients ) ? '' : 'hidden'; ?>">
57
+ <?php $this->_render( 'notice', array(
58
+ 'message' => esc_html__( "You've removed all recipients. If you save without a recipient, we'll automatically turn off reports.", 'wsd' ),
59
+ ) ); ?>
 
 
 
60
  </div>
61
 
62
+ <?php
63
+ $this->_render( 'email-recipients', array(
64
+ 'id' => 'wds-seo-checkup-email-recipients',
65
+ 'email_recipients' => $email_recipients,
66
+ 'field_name' => $option_name . '[checkup-email-recipients]',
67
+ ) );
68
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
+ <p></p>
71
+ <small><strong><?php esc_html_e( 'Schedule', 'wds' ); ?></strong></small>
72
+ <?php $this->_render( 'checkup/checkup-reporting-schedule', array(
73
+ 'checkup_freq' => $checkup_freq,
74
+ ) ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  </div>
76
  </div>
77
  </div>
78
 
79
+ <?php if ( ! $is_member ): ?>
80
+ <?php $this->_render( 'mascot-message', array(
81
+ 'key' => 'seo-checkup-upsell',
82
+ 'dismissible' => false,
83
+ 'message' => sprintf(
84
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_seocheckup_reporting_upsell_notice">%s</a>',
85
+ esc_html__( 'Grab the Pro version of SmartCrawl to unlock unlimited SEO Checkups plus automated scheduled reports to always stay on top of any issues. These features are included in a WPMU DEV membership along with 100+ plugins, 24/7 support and lots of handy site management tools.', 'wds' ),
86
+ esc_html__( '- Try it all FREE today', 'wds' )
87
+ ),
88
+ ) ); ?>
89
+ <?php endif; ?>
 
 
 
 
 
 
 
includes/admin/templates/checkup/checkup-results-inner.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $results = empty( $results ) ? array() : $results;
3
+ ?>
4
+
5
+ <?php if ( ! empty( $results['error'] ) ) { ?>
6
+ <?php
7
+ // We have encountered an error. So let's show that.
8
+ $this->_render( 'notice', array(
9
+ 'message' => esc_html( $results['error'] ),
10
+ 'class' => 'sui-notice-error',
11
+ ) );
12
+ ?>
13
+ <?php } elseif ( empty( $results['items'] ) ) { ?>
14
+ <?php $this->_render( 'checkup/checkup-no-data' ); ?>
15
+ <?php } else { ?>
16
+ <!--
17
+ This is where we store the actual result items.
18
+ Let's iterate through them.
19
+ -->
20
+ <div class="wds-accordion sui-accordion wds-draw-left">
21
+ <?php foreach ( $results['items'] as $idx => $item ) : ?>
22
+ <?php
23
+ $item_id = "wds-checkup-item-{$idx}";
24
+ $type = ! empty( $item['type'] )
25
+ ? sanitize_html_class( $item['type'] )
26
+ : '';
27
+ $custom_class = ! empty( $item['class'] )
28
+ ? sanitize_html_class( $item['class'] )
29
+ : '';
30
+ $style_class_map = array(
31
+ 'ok' => 'sui-success',
32
+ 'info' => '',
33
+ 'warning' => 'sui-warning',
34
+ 'critical' => 'sui-error',
35
+ );
36
+ $style_class = isset( $style_class_map[ $item['type'] ] ) ? $style_class_map[ $item['type'] ] : '';
37
+ $details = ! empty( $item['tooltip'] ) ? $item['tooltip'] : '';
38
+ $title = ! empty( $item['title'] ) ? $item['title'] : '';
39
+ $body = ! empty( $item['body'] ) ? $item['body'] : '';
40
+ $fix = ! empty( $item['fix'] ) ? $item['fix'] : '';
41
+ ?>
42
+ <div class="sui-accordion-item wds-check-item <?php echo esc_attr( $type ); ?> <?php echo esc_attr( $style_class ); ?> <?php echo esc_attr( $custom_class ); ?>"
43
+ id="<?php echo esc_attr( $item_id ); ?>">
44
+ <div class="sui-accordion-item-header">
45
+ <div class="sui-accordion-item-title">
46
+ <i aria-hidden="true"
47
+ class="<?php echo esc_attr( $style_class ); ?> <?php echo 'ok' === $type ? 'sui-icon-check-tick' : 'sui-icon-warning-alert'; ?>"></i>
48
+ <?php echo esc_html( $title ); ?>
49
+ </div>
50
+ <div>
51
+ <span class="sui-accordion-open-indicator">
52
+ <i aria-hidden="true" class="sui-icon-chevron-down"></i>
53
+ <button type="button"
54
+ class="sui-screen-reader-text"><?php esc_html_e( 'Expand', 'wds' ); ?></button>
55
+ </span>
56
+ </div>
57
+ </div>
58
+ <div class="sui-accordion-item-body wds-check-item-content <?php echo esc_attr( $type ); ?>">
59
+ <div class="sui-box">
60
+ <div class="sui-box-body">
61
+ <?php if ( $body || $fix ) : ?>
62
+ <div class="wds-recommendation">
63
+ <strong><?php esc_html_e( 'Recommendation', 'wds' ); ?></strong>
64
+
65
+ <?php echo wp_kses_post( $body ); ?>
66
+ <p><?php echo wp_kses_post( $fix ); ?></p>
67
+ </div>
68
+ <?php endif; ?>
69
+
70
+ <?php if ( $details ) : ?>
71
+ <div class="wds-more-info">
72
+ <strong><?php esc_html_e( 'More Info', 'wds' ); ?></strong>
73
+ <p><?php echo esc_html( $details ); ?></p>
74
+ </div>
75
+ <?php endif; ?>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <?php endforeach; ?>
81
+ </div>
82
+ <?php } ?>
includes/admin/templates/checkup/checkup-settings-inner.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
+ $counts = smartcrawl_get_array_value( $service->result(), 'counts' );
4
+ $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
5
+ $active_tab = empty( $active_tab ) ? '' : $active_tab;
6
+ $is_member = empty( $_view['is_member'] ) ? false : true;
7
+ $checkup_cron_enabled = ! empty( $_view['options']['checkup-cron-enable'] ) && $is_member;
8
+ $email_recipients = empty( $email_recipients ) ? array() : $email_recipients;
9
+ ?>
10
+
11
+ <div class="wds-seo-checkup-stats-container">
12
+ <?php $this->_render( 'checkup/checkup-top' ); ?>
13
+ </div>
14
+
15
+ <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
16
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
17
+
18
+ <input type="hidden"
19
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
20
+ value="1">
21
+
22
+ <div class="wds-vertical-tabs-container sui-row-with-sidenav">
23
+
24
+ <?php
25
+ $this->_render( 'vertical-tabs-side-nav', array(
26
+ 'active_tab' => $active_tab,
27
+ 'tabs' => array(
28
+ array(
29
+ 'id' => 'tab_checkup',
30
+ 'name' => esc_html__( 'Checkup', 'wds' ),
31
+ 'tag_value' => $issue_count > 0 ? $issue_count : false,
32
+ 'tag_class' => 'sui-tag-warning',
33
+ ),
34
+ array(
35
+ 'id' => 'tab_settings',
36
+ 'name' => esc_html__( 'Reporting', 'wds' ),
37
+ 'tick' => $checkup_cron_enabled,
38
+ ),
39
+ ),
40
+ ) );
41
+ ?>
42
+
43
+ <?php
44
+ $this->_render( 'vertical-tab', array(
45
+ 'tab_id' => 'tab_checkup',
46
+ 'tab_name' => esc_html__( 'Checkup', 'wds' ),
47
+ 'button_text' => false,
48
+ 'is_active' => 'tab_checkup' === $active_tab,
49
+ 'tab_sections' => array(
50
+ array(
51
+ 'section_template' => 'checkup/checkup-checkup',
52
+ ),
53
+ ),
54
+ ) );
55
+ ?>
56
+ <?php
57
+ $this->_render(
58
+ 'vertical-tab-upsell',
59
+ array(
60
+ 'tab_id' => 'tab_settings',
61
+ 'tab_name' => esc_html__( 'Reporting', 'wds' ),
62
+ 'is_active' => 'tab_settings' === $active_tab,
63
+ 'button_text' => $is_member ? esc_html__( 'Save Settings', 'wds' ) : '',
64
+ 'title_actions_left' => 'checkup/checkup-reporting-title-pro-tag',
65
+ 'tab_sections' => array(
66
+ array(
67
+ 'section_template' => 'checkup/checkup-reporting',
68
+ 'section_args' => array(
69
+ 'checkup_cron_enabled' => $checkup_cron_enabled,
70
+ 'email_recipients' => $email_recipients,
71
+ ),
72
+ ),
73
+ ),
74
+ )
75
+ );
76
+ ?>
77
+
78
+ </div>
79
+ </form>
includes/admin/templates/checkup/checkup-settings.php CHANGED
@@ -1,78 +1,39 @@
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
- $checkup_url = Smartcrawl_Checkup_Settings::checkup_url();
4
- $last_checked = $service->get_last_checked( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) );
 
 
 
5
  ?>
6
- <div id="container"
7
- class="wrap wrap-wds wds-page wds-checkup-settings <?php echo $service->is_member() ? 'wds-is-member' : 'wds-is-not-member'; ?>">
8
-
9
- <section id="header">
10
- <?php $this->_render( 'settings-message-top' ); ?>
11
- <div class="actions">
12
- <?php
13
- printf(
14
- esc_html__( 'Last checked: %s', 'wds' ),
15
- esc_html( $last_checked )
16
- );
17
- ?>
18
- <a href="<?php echo esc_attr( $checkup_url ); ?>" class="button button-small">
19
- <?php esc_html_e( 'Run checkup', 'wds' ); ?>
20
- </a>
21
- <a target="_blank" class="button button-small button-light actions-button"
22
- href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#chapter-1">
23
- <i class="wds-icon-academy"></i>
24
- <?php esc_html_e( 'View Documentation', 'wds' ); ?>
25
- </a>
26
- </div>
27
- <h1><?php esc_html_e( 'SEO Checkup', 'wds' ); ?></h1>
28
- </section><!-- end header -->
29
-
30
- <div class="wds-seo-checkup-stats-container">
31
- <?php $this->_render( 'checkup/checkup-top' ); ?>
32
- </div>
33
-
34
- <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
35
- <?php settings_fields( $_view['option_name'] ); ?>
36
-
37
- <input type="hidden"
38
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
39
- value="1">
40
-
41
- <div class="vertical-tabs" id="checkup-settings-tabs">
42
- <?php
43
- $this->_render( 'report-vertical-tab', array(
44
- 'tab_id' => 'tab_checkup',
45
- 'tab_name' => __( 'Checkup', 'wds' ),
46
- 'is_active' => 'tab_checkup' === $active_tab,
47
- 'tab_sections' => array(
48
- array(
49
- 'section_template' => 'checkup/checkup-checkup',
50
- ),
51
- ),
52
- ) );
53
- ?>
54
- <?php
55
- $is_member = $service->is_member();
56
- $this->_render(
57
- $is_member ? 'vertical-tab' : 'report-vertical-tab',
58
- array(
59
- 'tab_id' => 'tab_settings',
60
- 'tab_name' => __( 'Reporting', 'wds' ),
61
- 'is_active' => 'tab_settings' === $active_tab,
62
- 'title_button' => 'upgrade',
63
- 'tab_sections' => array(
64
- array(
65
- 'section_description' => esc_html__( 'Set up SmartCrawl to automatically run a comprehensive checkup daily, weekly or monthly and receive an email report.', 'wds' ),
66
- 'section_template' => 'checkup/checkup-reporting',
67
- ),
68
- ),
69
- )
70
- );
71
- ?>
72
-
73
- </div>
74
- </form>
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  <?php $this->_render( 'upsell-modal' ); ?>
77
  </div>
78
-
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
+ $last_checked_timestamp = $service->get_last_checked_timestamp();
4
+ $active_tab = empty( $active_tab ) ? '' : $active_tab;
5
+ $this->_render( 'before-page-container' );
6
+ $email_recipients = empty( $email_recipients ) ? array() : $email_recipients;
7
+ $in_progress = $service->in_progress();
8
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
+ <div id="container"
11
+ class="sui-wrap wrap wrap-wds wds-page wds-checkup-settings">
12
+
13
+ <?php $this->_render( 'page-header', array(
14
+ 'title' => esc_html__( 'SEO Checkup', 'wds' ),
15
+ 'documentation_chapter' => 'seo-checkup',
16
+ 'extra_actions' => 'checkup/checkup-header-actions',
17
+ 'extra_actions_args' => array(
18
+ 'in_progress' => $in_progress,
19
+ ),
20
+ ) ); ?>
21
+
22
+ <?php if ( empty( $last_checked_timestamp ) || $in_progress ): ?>
23
+ <?php if ( $in_progress ): ?>
24
+ <?php $this->_render( 'checkup/checkup-progress-modal' ); ?>
25
+ <?php endif; ?>
26
+
27
+ <?php $this->_render( 'checkup/checkup-get-started', array(
28
+ 'in_progress' => $in_progress,
29
+ ) ); ?>
30
+ <?php else: ?>
31
+ <?php $this->_render( 'checkup/checkup-settings-inner', array(
32
+ 'active_tab' => $active_tab,
33
+ 'email_recipients' => $email_recipients,
34
+ ) ); ?>
35
+ <?php endif; ?>
36
+
37
+ <?php $this->_render( 'footer' ); ?>
38
  <?php $this->_render( 'upsell-modal' ); ?>
39
  </div>
 
includes/admin/templates/checkup/checkup-top.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
 
3
  if ( $service->in_progress() ) {
4
  return;
5
  }
@@ -13,39 +14,63 @@ if ( null === $counts || null === $score || false === $score ) {
13
  }
14
 
15
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
16
- $score_class = $issue_count > 0 ? 'wds-score-warning' : 'wds-score-success';
17
  $opts = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_CHECKUP );
18
  $reporting_enabled = ! empty( $opts['checkup-cron-enable'] );
 
 
 
19
  ?>
20
- <div class="wds-seo-checkup-stats wds-report-stats" data-issue-count="<?php echo esc_attr( $issue_count ); ?>">
21
- <div class="wds-report-score">
22
- <div class="wds-score <?php echo esc_attr( $score_class ); ?>">
23
- <?php echo esc_html( $score ); ?><span class="wds-total"><?php esc_html_e( '/100', 'wds' ); ?></span>
24
- </div>
25
- <div class="wds-small-text"><?php esc_html_e( 'Current SEO Score', 'wds' ); ?></div>
26
  </div>
27
 
28
- <div>
29
- <div class="wds-stacked-stats">
30
- <div>
31
- <div class="wds-stat-name"><?php esc_html_e( 'Last checked:', 'wds' ); ?></div>
32
- <div
33
- class="wds-stat-value"><?php echo esc_html( $service->get_last_checked( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) ); ?></div>
 
34
  </div>
 
 
35
 
36
- <div>
37
- <div class="wds-stat-name"><?php esc_html_e( 'SEO Issues', 'wds' ); ?></div>
38
- <div class="wds-stat-value">
39
- <span class="wds-issues <?php echo $issue_count > 0 ? esc_attr( 'wds-issues-warning' ) : ''; ?>">
40
- <span><?php echo esc_html( $issue_count ); ?></span>
 
 
 
 
 
 
 
 
 
 
 
41
  </span>
42
- </div>
43
- </div>
44
 
45
- <div>
46
- <div class="wds-stat-name"><?php esc_html_e( 'Scheduled reports', 'wds' ); ?></div>
47
- <div class="wds-stat-value" style="line-height: 1">
48
- <?php if ( $service->is_member() ) : ?>
 
 
 
 
 
 
 
 
 
 
49
  <?php if ( $reporting_enabled ) : ?>
50
 
51
  <?php
@@ -56,43 +81,37 @@ $reporting_enabled = ! empty( $opts['checkup-cron-enable'] );
56
  $checkup_tod = smartcrawl_get_array_value( $opts, 'checkup-tod' );
57
  ?>
58
 
59
- <span class="wds-checkup-frequency"><?php echo esc_html( $checkup_frequency ); ?></span>
60
- <br/>
61
- <span class="wds-checkup-frequency-details">
62
- <?php
63
- if ( 'daily' === $checkup_frequency ) {
64
- printf(
65
- esc_html__( 'at %s' ),
66
- esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $checkup_tod * HOUR_IN_SECONDS ) ) )
67
- );
68
- } else {
69
- printf(
70
- esc_html__( 'Every %1$s at %2$s' ),
71
- esc_html( date_i18n( 'l', $monday + ( $checkup_dow * DAY_IN_SECONDS ) ) ),
72
- esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $checkup_tod * HOUR_IN_SECONDS ) ) )
73
- );
74
- }
75
- ?>
76
- </span>
77
 
78
  <?php else : ?>
79
- <button class="button button-small wds-enable-reporting">
80
  <?php esc_html_e( 'Enable', 'wds' ); ?>
81
  </button>
82
- <button class="button button-small wds-disable-reporting"
83
  style="display: none;">
84
  <?php esc_html_e( 'Disable', 'wds' ); ?>
85
  </button>
86
  <?php endif; ?>
87
  <?php else : /* Not a member, this is a pro feature */ ?>
88
- <button class="wds-upgrade-button button-pro wds-has-tooltip"
89
- data-content="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>"
90
- type="button">
91
- <?php esc_html_e( 'Pro feature', 'wds' ); ?>
92
- </button>
93
  <?php endif; ?>
94
- </div>
95
- </div>
96
- </div>
97
  </div>
98
  </div>
1
  <?php
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
+ $is_member = $service->is_member();
4
  if ( $service->in_progress() ) {
5
  return;
6
  }
14
  }
15
 
16
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
17
+ $score_class = $issue_count > 0 ? 'sui-icon-info sui-warning' : 'sui-icon-check-tick sui-success';
18
  $opts = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_CHECKUP );
19
  $reporting_enabled = ! empty( $opts['checkup-cron-enable'] );
20
+ $cron = Smartcrawl_Controller_Cron::get();
21
+ $frequencies = $cron->get_frequencies();
22
+ $whitelabel_class = Smartcrawl_White_Label::get()->summary_class();
23
  ?>
24
+ <div class="sui-box sui-summary <?php echo esc_attr( $whitelabel_class ); ?>"
25
+ data-issue-count="<?php echo esc_attr( $issue_count ); ?>">
26
+
27
+ <div class="sui-summary-image-space">
 
 
28
  </div>
29
 
30
+ <div class="sui-summary-segment">
31
+ <div class="sui-summary-details">
32
+ <div class="wds-checkup-summary">
33
+ <span class="sui-summary-large"><?php echo esc_html( intval( $score ) ); ?></span>
34
+ <i class="<?php echo esc_attr( $score_class ); ?>"></i>
35
+ <span class="sui-summary-percent">/100</span>
36
+ <span class="sui-summary-sub"><?php esc_html_e( 'Current SEO Score', 'wds' ); ?></span>
37
  </div>
38
+ </div>
39
+ </div>
40
 
41
+ <div class="sui-summary-segment">
42
+ <ul class="sui-list">
43
+ <li>
44
+ <span class="sui-list-label"><?php esc_html_e( 'Last SEO Checkup', 'wds' ); ?></span>
45
+ <span class="sui-list-detail"><?php echo esc_html( $service->get_last_checked( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) ); ?></span>
46
+ </li>
47
+
48
+ <li>
49
+ <span class="sui-list-label"><?php esc_html_e( 'SEO Issues', 'wds' ); ?></span>
50
+ <span class="sui-list-detail">
51
+ <?php if ( $issue_count > 0 ): ?>
52
+ <span class="sui-tag sui-tag-warning"><?php echo esc_html( $issue_count ); ?></span>
53
+ <?php else: ?>
54
+ <i class="sui-icon-check-tick sui-success" aria-hidden="true"></i>
55
+ <small><?php esc_html_e( 'No issues', 'wds' ); ?></small>
56
+ <?php endif; ?>
57
  </span>
58
+ </li>
 
59
 
60
+ <li>
61
+ <span class="sui-list-label">
62
+ <?php esc_html_e( 'Scheduled Reports', 'wds' ); ?>
63
+ <?php if ( ! $is_member ) : ?>
64
+ <a href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_seocheckup_top_reports_pro_tag"
65
+ target="_blank">
66
+ <span class="sui-tag sui-tag-pro sui-tooltip sui-tooltip-constrained"
67
+ style="--tooltip-width: 200px;"
68
+ data-tooltip="<?php esc_attr_e( 'Upgrade to Pro to schedule automated checkups and email reports', 'wds' ); ?>"> <?php esc_html_e( 'Pro', 'wds' ); ?></span>
69
+ </a>
70
+ <?php endif; ?>
71
+ </span>
72
+ <span class="sui-list-detail">
73
+ <?php if ( $is_member ) : ?>
74
  <?php if ( $reporting_enabled ) : ?>
75
 
76
  <?php
81
  $checkup_tod = smartcrawl_get_array_value( $opts, 'checkup-tod' );
82
  ?>
83
 
84
+ <?php
85
+ if ( 'daily' === $checkup_frequency ) {
86
+ printf(
87
+ esc_html__( '%1$s at %2$s' ),
88
+ esc_html( smartcrawl_get_array_value( $frequencies, $checkup_frequency ) ),
89
+ esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $checkup_tod * HOUR_IN_SECONDS ) ) )
90
+ );
91
+ } else {
92
+ printf(
93
+ esc_html__( '%1$s on %2$ss at %3$s' ),
94
+ esc_html( smartcrawl_get_array_value( $frequencies, $checkup_frequency ) ),
95
+ esc_html( date_i18n( 'l', $monday + ( $checkup_dow * DAY_IN_SECONDS ) ) ),
96
+ esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $checkup_tod * HOUR_IN_SECONDS ) ) )
97
+ );
98
+ }
99
+ ?>
 
 
100
 
101
  <?php else : ?>
102
+ <button class="sui-button sui-button-blue wds-enable-reporting">
103
  <?php esc_html_e( 'Enable', 'wds' ); ?>
104
  </button>
105
+ <button class="sui-button sui-button-blue wds-disable-reporting"
106
  style="display: none;">
107
  <?php esc_html_e( 'Disable', 'wds' ); ?>
108
  </button>
109
  <?php endif; ?>
110
  <?php else : /* Not a member, this is a pro feature */ ?>
111
+ <span class="sui-tag sui-tag-inactive"><?php esc_html_e( 'Inactive', 'wds' ); ?></span>
 
 
 
 
112
  <?php endif; ?>
113
+ </span>
114
+ </li>
115
+ </ul>
116
  </div>
117
  </div>
includes/admin/templates/dashboard/dashboard-box-title-url-crawl-in-progress.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php // phpcs:ignoreFile ?>
2
+ <div class="wds-box-refresh-required"></div>
3
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
includes/admin/templates/dashboard/dashboard-box-title-url-crawl-stats.php CHANGED
@@ -5,13 +5,21 @@ if ( is_null( $report ) ) {
5
  return;
6
  }
7
 
8
- $active_issues = $report->get_issues_count();
 
 
 
 
 
 
9
  ?>
10
 
11
  <?php if ( $active_issues > 0 ) : ?>
12
- <span class="wds-issues wds-issues-warning wds-has-tooltip"
13
- data-content="<?php printf( esc_attr__( 'You have %s sitemap issues', 'wds' ), intval( $active_issues ) ); ?>">
14
-
15
- <?php echo intval( $active_issues ); ?>
16
- </span>
 
 
17
  <?php endif; ?>
5
  return;
6
  }
7
 
8
+ $active_issues = intval( $report->get_issues_count() );
9
+ $sitemap_issues_tooltip = _n(
10
+ 'You have %s sitemap issue',
11
+ 'You have %s sitemap issues',
12
+ $active_issues,
13
+ 'wds'
14
+ );
15
  ?>
16
 
17
  <?php if ( $active_issues > 0 ) : ?>
18
+ <div class="sui-actions-left">
19
+ <span class="sui-tag sui-tag-warning sui-tooltip"
20
+ data-tooltip="<?php echo esc_attr( sprintf( $sitemap_issues_tooltip, $active_issues ) ); ?>">
21
+
22
+ <?php echo intval( $active_issues ); ?>
23
+ </span>
24
+ </div>
25
  <?php endif; ?>
includes/admin/templates/dashboard/dashboard-checkup-progress.php CHANGED
@@ -1,13 +1,7 @@
1
  <?php
2
- $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
- $percentage = $service->status();
4
- $progress = (int) $percentage;
5
- if ( $progress > 100 ) {
6
- $progress = 100;
7
- }
8
  ?>
9
  <p><?php esc_html_e( 'SmartCrawl is performing a full SEO checkup which will take a few moments. You can close this page if you need to, we’ll let you know when it’s complete.', 'wds' ); ?></p>
10
- <div class="wds-box-refresh-required"></div>
11
  <?php
12
  $this->_render( 'progress-bar', array(
13
  'progress' => $progress,
@@ -20,7 +14,7 @@ if ( ! Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member()
20
  'key' => 'dash-seo-checkup-upsell',
21
  'dismissible' => false,
22
  'message' => sprintf(
23
- '%s <a href="#upgrade-to-pro">%s</a>',
24
  esc_html__( 'Did you know with SmartCrawl Pro you can schedule automated SEO checkups and send whitelabel email reports direct to yours and your clients inboxes?', 'wds' ),
25
  esc_html__( '- Try it all FREE today', 'wds' )
26
  ),
1
  <?php
2
+ $progress = 0;
 
 
 
 
 
3
  ?>
4
  <p><?php esc_html_e( 'SmartCrawl is performing a full SEO checkup which will take a few moments. You can close this page if you need to, we’ll let you know when it’s complete.', 'wds' ); ?></p>
 
5
  <?php
6
  $this->_render( 'progress-bar', array(
7
  'progress' => $progress,
14
  'key' => 'dash-seo-checkup-upsell',
15
  'dismissible' => false,
16
  'message' => sprintf(
17
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_dash_seocheckup_upsell_notice">%s</a>',
18
  esc_html__( 'Did you know with SmartCrawl Pro you can schedule automated SEO checkups and send whitelabel email reports direct to yours and your clients inboxes?', 'wds' ),
19
  esc_html__( '- Try it all FREE today', 'wds' )
20
  ),
includes/admin/templates/dashboard/dashboard-content-analysis-readability-overview.php CHANGED
@@ -26,63 +26,103 @@ $percentage = ! empty( $total )
26
 
27
  if ( 0 === $passed && 0 === $total ) {
28
  $class = 'wds-check-invalid';
 
29
  $indicator = esc_html__( 'No data yet', 'wds' );
30
  } elseif ( $percentage > 79 ) {
31
- $class = 'wds-check-success';
 
32
  $indicator = esc_html__( 'Easy', 'wds' );
33
  } elseif ( $percentage > 59 ) {
34
- $class = 'wds-check-warning';
 
35
  $indicator = esc_html__( 'Difficult', 'wds' );
36
  } else {
37
- $class = 'wds-check-error';
 
38
  $indicator = esc_html__( 'Difficult', 'wds' );
39
  }
40
  ?>
41
- <div class="wds-accordion wds-readability-analysis-overview">
42
- <div class="wds-accordion-section wds-check-item <?php echo esc_attr( $class ); ?>">
 
 
 
 
 
 
 
 
43
 
44
- <div class="wds-accordion-handle">
45
- <div class="wds-accordion-handle-part"><?php esc_html_e( 'Overall Readability Analysis', 'wds' ); ?></div>
46
- <div class="wds-accordion-handle-part">
47
- <span class="wds-check-item-indicator"><?php echo esc_html( $indicator ); ?></span>
 
 
48
  </div>
49
  </div>
50
 
51
- <div class="wds-accordion-content">
52
- <p class="wds-small-text">
53
- <?php esc_html_e( "Here's a breakdown of where you can make improvements.", 'wds' ); ?>
54
  </p>
55
 
56
- <table class="wds-list-table">
57
- <tr>
58
- <th><?php esc_html_e( 'Post Type', 'wds' ); ?></th>
59
- <th><?php esc_html_e( 'Difficult', 'wds' ); ?></th>
60
- <th><?php esc_html_e( 'Okay', 'wds' ); ?></th>
61
- <th><?php esc_html_e( 'Easy', 'wds' ); ?></th>
62
- </tr>
63
- <?php foreach ( $type_breakdown as $post_type => $type_overview ) : ?>
64
- <?php
65
- $difficult = intval( smartcrawl_get_array_value( $type_overview, 'error' ) );
66
- $okay = intval( smartcrawl_get_array_value( $type_overview, 'warning' ) );
67
- $easy = intval( smartcrawl_get_array_value( $type_overview, 'success' ) );
68
-
69
- $edit_url = admin_url( 'edit.php?wds_readability_threshold=' );
70
- ?>
71
  <tr>
72
- <td><?php echo esc_html( $post_type ); ?></td>
73
- <td>
74
- <?php $difficult > 0 ? printf( '<span class="wds-issues wds-readability-difficult wds-issues-error"><a href="%s">%s</a></span>', esc_url( add_query_arg( 'post_type', $post_type, "{$edit_url}0" ) ), intval( $difficult ) ) : print( 0 ); ?>
75
- </td>
76
- <td>
77
- <?php $okay > 0 ? printf( '<span class="wds-issues wds-readability-okay wds-issues-warning"><a href="%s">%s</a></span>', esc_url( add_query_arg( 'post_type', $post_type, "{$edit_url}1" ) ), intval( $okay ) ) : print( 0 ); ?>
78
- </td>
79
- <td>
80
- <?php $easy > 0 ? printf( '<span class="wds-issues wds-readability-easy wds-issues-success-bg">%s</span>', intval( $easy ) ) : print( 0 ); ?>
81
- </td>
82
  </tr>
83
- <?php endforeach; ?>
84
- </table>
85
- </div>
 
 
 
 
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  </div>
88
- </div>
26
 
27
  if ( 0 === $passed && 0 === $total ) {
28
  $class = 'wds-check-invalid';
29
+ $indicator_class = 'sui-tag-inactive';
30
  $indicator = esc_html__( 'No data yet', 'wds' );
31
  } elseif ( $percentage > 79 ) {
32
+ $class = 'wds-check-success sui-success';
33
+ $indicator_class = 'sui-tag-success';
34
  $indicator = esc_html__( 'Easy', 'wds' );
35
  } elseif ( $percentage > 59 ) {
36
+ $class = 'wds-check-warning sui-warning';
37
+ $indicator_class = 'sui-tag-warning';
38
  $indicator = esc_html__( 'Difficult', 'wds' );
39
  } else {
40
+ $class = 'wds-check-error sui-error';
41
+ $indicator_class = 'sui-tag-error';
42
  $indicator = esc_html__( 'Difficult', 'wds' );
43
  }
44
  ?>
45
+ <section class="wds-accordion wds-draw-left sui-accordion wds-readability-analysis-overview">
46
+ <div class="sui-accordion-item wds-check-item <?php echo esc_attr( $class ); ?>">
47
+ <div class="sui-accordion-item-header">
48
+ <div class="sui-accordion-item-title sui-accordion-col-6">
49
+ <?php esc_html_e( 'Overall Readability Analysis', 'wds' ); ?>
50
+ </div>
51
+
52
+ <div class="sui-accordion-col-4">
53
+ <span class="sui-tag <?php echo esc_attr( $indicator_class ); ?>"><?php echo esc_html( $indicator ); ?></span>
54
+ </div>
55
 
56
+ <div class="sui-accordion-col-1">
57
+ <span class="sui-accordion-open-indicator">
58
+ <i aria-hidden="true" class="sui-icon-chevron-down"></i>
59
+ <button type="button"
60
+ class="sui-screen-reader-text"><?php esc_html_e( 'Expand', 'wds' ); ?></button>
61
+ </span>
62
  </div>
63
  </div>
64
 
65
+ <div class="sui-accordion-item-body wds-check-item-content">
66
+ <p>
67
+ <small><?php esc_html_e( "Here's a breakdown of where you can make improvements.", 'wds' ); ?></small>
68
  </p>
69
 
70
+ <div class="sui-box">
71
+ <table class="sui-table">
72
+ <thead>
 
 
 
 
 
 
 
 
 
 
 
 
73
  <tr>
74
+ <th><?php esc_html_e( 'Post Type', 'wds' ); ?></th>
75
+ <th><?php esc_html_e( 'Difficult', 'wds' ); ?></th>
76
+ <th><?php esc_html_e( 'Okay', 'wds' ); ?></th>
77
+ <th><?php esc_html_e( 'Easy', 'wds' ); ?></th>
 
 
 
 
 
 
78
  </tr>
79
+ </thead>
80
+ <?php foreach ( $type_breakdown as $post_type => $type_overview ) : ?>
81
+ <?php
82
+ $difficult = intval( smartcrawl_get_array_value( $type_overview, 'error' ) );
83
+ $okay = intval( smartcrawl_get_array_value( $type_overview, 'warning' ) );
84
+ $easy = intval( smartcrawl_get_array_value( $type_overview, 'success' ) );
85
+ $post_type_object = get_post_type_object( $post_type );
86
 
87
+ $edit_url = admin_url( 'edit.php?wds_readability_threshold=' );
88
+ ?>
89
+ <tr>
90
+ <th><?php echo esc_html( $post_type_object->label ); ?></th>
91
+ <td>
92
+ <?php if ( $difficult > 0 ): ?>
93
+ <a href="<?php echo esc_url( add_query_arg( 'post_type', $post_type, "{$edit_url}0" ) ); ?>">
94
+ <span class="wds-readability-difficult sui-tag sui-tag-error">
95
+ <?php echo intval( $difficult ); ?>
96
+ </span>
97
+ </a>
98
+ <?php else: ?>
99
+ <?php esc_html_e( 'None', 'wds' ); ?>
100
+ <?php endif; ?>
101
+ </td>
102
+ <td>
103
+ <?php if ( $okay > 0 ): ?>
104
+ <a href="<?php echo esc_url( add_query_arg( 'post_type', $post_type, "{$edit_url}1" ) ); ?>">
105
+ <span class="wds-readability-okay sui-tag sui-tag-warning">
106
+ <?php echo intval( $okay ); ?>
107
+ </span>
108
+ </a>
109
+ <?php else: ?>
110
+ <?php esc_html_e( 'None', 'wds' ); ?>
111
+ <?php endif; ?>
112
+ </td>
113
+ <td>
114
+ <?php if ( $easy > 0 ): ?>
115
+ <span class="wds-readability-easy sui-tag sui-tag-success">
116
+ <?php echo intval( $easy ); ?>
117
+ </span>
118
+ <?php else: ?>
119
+ <?php esc_html_e( 'None', 'wds' ); ?>
120
+ <?php endif; ?>
121
+ </td>
122
+ </tr>
123
+ <?php endforeach; ?>
124
+ </table>
125
+ </div>
126
+ </div>
127
  </div>
128
+ </section>
includes/admin/templates/dashboard/dashboard-content-analysis-seo-overview.php CHANGED
@@ -26,57 +26,83 @@ $percentage = ! empty( $total )
26
 
27
  if ( 0 === $passed && 0 === $total ) {
28
  $class = 'wds-check-invalid';
 
29
  $indicator = esc_html__( 'No data yet', 'wds' );
30
  } elseif ( $percentage > 60 ) {
31
- $class = 'wds-check-success';
 
32
  $indicator = esc_html__( 'Good', 'wds' );
33
  } else {
34
- $class = 'wds-check-warning';
 
35
  $indicator = esc_html__( 'Poor', 'wds' );
36
  }
37
  ?>
38
- <div class="wds-accordion wds-seo-analysis-overview">
39
- <div class="wds-accordion-section wds-check-item <?php echo esc_attr( $class ); ?>">
40
-
41
- <div class="wds-accordion-handle">
42
- <div class="wds-accordion-handle-part"><?php esc_html_e( 'Overall SEO Analysis', 'wds' ); ?></div>
43
- <div class="wds-accordion-handle-part">
44
- <span class="wds-check-item-indicator"><?php echo esc_html( $indicator ); ?></span>
 
 
 
 
 
 
 
 
45
  </div>
46
  </div>
47
-
48
- <div class="wds-accordion-content">
49
- <p class="wds-small-text">
50
- <?php esc_html_e( "Here's a breakdown of where you can make improvements.", 'wds' ); ?>
51
  </p>
52
 
53
- <table class="wds-list-table">
54
- <tr>
55
- <th><?php esc_html_e( 'Post Type', 'wds' ); ?></th>
56
- <th><?php esc_html_e( 'Poor', 'wds' ); ?></th>
57
- <th><?php esc_html_e( 'Good', 'wds' ); ?></th>
58
- </tr>
59
- <?php foreach ( $type_breakdown as $post_type => $type_overview ) : ?>
60
- <?php
61
- $total_for_type = intval( smartcrawl_get_array_value( $type_overview, 'total' ) );
62
- $passed_for_type = intval( smartcrawl_get_array_value( $type_overview, 'passed' ) );
63
- $failed_for_type = $total_for_type - $passed_for_type;
64
-
65
- $fail_url = admin_url( "edit.php?post_type={$post_type}&wds_analysis_threshold=99" );
66
- $success_url = admin_url( "edit.php?post_type={$post_type}&wds_analysis_threshold=100" );
67
- ?>
68
  <tr>
69
- <td><?php echo esc_html( $post_type ); ?></td>
70
- <td>
71
- <?php $failed_for_type > 0 ? printf( '<span class="wds-issues wds-seo-analysis-poor wds-issues-warning"><a href="%s">%s</a></span>', esc_url( $fail_url ), intval( $failed_for_type ) ) : print( 0 ); ?>
72
- </td>
73
- <td>
74
- <?php $passed_for_type > 0 ? printf( '<span class="wds-issues wds-seo-analysis-good wds-issues-success-bg"><a href="%s">%s</a></span>', esc_url( $success_url ), intval( $passed_for_type ) ) : print( 0 ); ?>
75
- </td>
76
  </tr>
77
- <?php endforeach; ?>
78
- </table>
79
- </div>
 
 
 
 
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  </div>
82
- </div>
26
 
27
  if ( 0 === $passed && 0 === $total ) {
28
  $class = 'wds-check-invalid';
29
+ $indicator_class = 'sui-tag-inactive';
30
  $indicator = esc_html__( 'No data yet', 'wds' );
31
  } elseif ( $percentage > 60 ) {
32
+ $class = 'wds-check-success sui-success';
33
+ $indicator_class = 'sui-tag-success';
34
  $indicator = esc_html__( 'Good', 'wds' );
35
  } else {
36
+ $class = 'wds-check-warning sui-warning';
37
+ $indicator_class = 'sui-tag-warning';
38
  $indicator = esc_html__( 'Poor', 'wds' );
39
  }
40
  ?>
41
+ <section class="wds-accordion wds-draw-left sui-accordion wds-seo-analysis-overview">
42
+ <div class="sui-accordion-item wds-check-item <?php echo esc_attr( $class ); ?>">
43
+ <div class="sui-accordion-item-header">
44
+ <div class="sui-accordion-item-title sui-accordion-col-6">
45
+ <?php esc_html_e( 'Overall SEO Analysis', 'wds' ); ?>
46
+ </div>
47
+ <div class="sui-accordion-col-4">
48
+ <span class="sui-tag <?php echo esc_attr( $indicator_class ); ?>"><?php echo esc_html( $indicator ); ?></span>
49
+ </div>
50
+ <div class="sui-accordion-col-1">
51
+ <span class="sui-accordion-open-indicator">
52
+ <i aria-hidden="true" class="sui-icon-chevron-down"></i>
53
+ <button type="button"
54
+ class="sui-screen-reader-text"><?php esc_html_e( 'Expand', 'wds' ); ?></button>
55
+ </span>
56
  </div>
57
  </div>
58
+ <div class="sui-accordion-item-body wds-check-item-content">
59
+ <p>
60
+ <small><?php esc_html_e( "Here's a breakdown of where you can make improvements.", 'wds' ); ?></small>
 
61
  </p>
62
 
63
+ <div class="sui-box">
64
+ <table class="sui-table">
65
+ <thead>
 
 
 
 
 
 
 
 
 
 
 
 
66
  <tr>
67
+ <th><?php esc_html_e( 'Post Type', 'wds' ); ?></th>
68
+ <th><?php esc_html_e( 'Poor', 'wds' ); ?></th>
69
+ <th><?php esc_html_e( 'Good', 'wds' ); ?></th>
 
 
 
 
70
  </tr>
71
+ </thead>
72
+ <?php foreach ( $type_breakdown as $post_type => $type_overview ) : ?>
73
+ <?php
74
+ $total_for_type = intval( smartcrawl_get_array_value( $type_overview, 'total' ) );
75
+ $passed_for_type = intval( smartcrawl_get_array_value( $type_overview, 'passed' ) );
76
+ $failed_for_type = $total_for_type - $passed_for_type;
77
+ $post_type_object = get_post_type_object( $post_type );
78
 
79
+ $fail_url = admin_url( "edit.php?post_type={$post_type}&wds_analysis_threshold=99" );
80
+ $success_url = admin_url( "edit.php?post_type={$post_type}&wds_analysis_threshold=100" );
81
+ ?>
82
+ <tr>
83
+ <th><?php echo esc_html( $post_type_object->label ); ?></th>
84
+ <td>
85
+ <?php if ( $failed_for_type > 0 ): ?>
86
+ <a href="<?php echo esc_url( $fail_url ); ?>">
87
+ <span class="wds-seo-analysis-poor sui-tag sui-tag-warning"><?php echo intval( $failed_for_type ); ?></span>
88
+ </a>
89
+ <?php else: ?>
90
+ <?php esc_html_e( 'None', 'wds' ); ?>
91
+ <?php endif; ?>
92
+ </td>
93
+ <td>
94
+ <?php if ( $passed_for_type > 0 ): ?>
95
+ <a href="<?php echo esc_url( $success_url ); ?>">
96
+ <span class="wds-seo-analysis-good sui-tag sui-tag-success"><?php echo intval( $passed_for_type ); ?></span>
97
+ </a>
98
+ <?php else: ?>
99
+ <?php esc_html_e( 'None', 'wds' ); ?>
100
+ <?php endif; ?>
101
+ </td>
102
+ </tr>
103
+ <?php endforeach; ?>
104
+ </table>
105
+ </div>
106
+ </div>
107
  </div>
108
+ </section>
includes/admin/templates/dashboard/dashboard-cross-sell-footer.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member() ) {
3
+ return;
4
+ }
5
+ ?>
6
+
7
+ <div class="sui-row" id="sui-cross-sell-footer">
8
+ <div><span class="sui-icon-plugin-2"></span></div>
9
+ <h3><?php esc_html_e( 'Check out our other free wordpress.org plugins!', 'wds' ); ?></h3>
10
+ </div>
11
+
12
+ <div class="sui-row sui-cross-sell-modules">
13
+ <div class="sui-col-md-4">
14
+ <div class="sui-cross-1"><span></span></div>
15
+ <div class="sui-box">
16
+ <div class="sui-box-body">
17
+ <h3><?php esc_html_e( 'Smush Image Compression and Optimization', 'wds' ); ?></h3>
18
+ <p><?php esc_html_e( 'Resize, optimize and compress all of your images with the incredibly powerful and award-winning, 100% free WordPress image optimizer.', 'wds' ); ?></p>
19
+ <a href="https://wordpress.org/plugins/wp-smushit/" class="sui-button sui-button-ghost"
20
+ target="_blank">
21
+ <?php esc_html_e( 'View features', 'wds' ); ?> <i class="sui-icon-arrow-right"></i>
22
+ </a>
23
+ </div>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="sui-col-md-4">
28
+ <div class="sui-cross-2"><span></span></div>
29
+ <div class="sui-box">
30
+ <div class="sui-box-body">
31
+ <h3><?php esc_html_e( 'Defender Security, Monitoring, and Hack Protection', 'wds' ); ?></h3>
32
+ <p><?php esc_html_e( 'Security Tweaks & Recommendations, File & Malware Scanning, Login & 404 Lockout Protection, Two-Factor Authentication & more.', 'wds' ); ?></p>
33
+ <a href="https://wordpress.org/plugins/defender-security/"
34
+ class="sui-button sui-button-ghost" target="_blank">
35
+ <?php esc_html_e( 'View features', 'wds' ); ?> <i class="sui-icon-arrow-right"></i>
36
+ </a>
37
+ </div>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="sui-col-md-4">
42
+ <div class="sui-cross-3"><span></span></div>
43
+ <div class="sui-box">
44
+ <div class="sui-box-body">
45
+ <h3><?php esc_html_e( 'Hummingbird Page Speed Optimization', 'wds' ); ?></h3>
46
+ <p><?php esc_html_e( 'Performance Tests, File Optimization & Compression, Page, Browser & Gravatar Caching, GZIP Compression, CloudFlare Integration & more.', 'wds' ); ?></p>
47
+ <a href="https://wordpress.org/plugins/hummingbird-performance/"
48
+ class="sui-button sui-button-ghost" target="_blank">
49
+ <?php esc_html_e( 'View features', 'wds' ); ?> <i class="sui-icon-arrow-right"></i>
50
+ </a>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="sui-cross-sell-bottom">
57
+ <h3><?php esc_html_e( 'WPMU DEV - Your WordPress Toolkit', 'wds' ); ?></h3>
58
+ <p><?php esc_html_e( 'Pretty much everything you need for developing and managing WordPress based websites, and then some.', 'wds' ); ?></p>
59
+
60
+ <a class="sui-button sui-button-green"
61
+ target="_blank"
62
+ href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_dash_footer_upsell_notice"
63
+ id="dash-uptime-update-membership" rel="dialog">
64
+ <?php esc_html_e( 'Learn more', 'wds' ); ?>
65
+ </a>
66
+
67
+ <img class="sui-image"
68
+ src="<?php echo esc_attr( SMARTCRAWL_PLUGIN_URL ); ?>/assets/shared-ui/images/dev-team.png"
69
+ srcset="<?php echo esc_attr( SMARTCRAWL_PLUGIN_URL ); ?>/assets/shared-ui/images/dev-team@2x.png 2x"
70
+ alt="<?php esc_html_e( 'Try pro features for free!', 'wds' ); ?>">
71
+ </div>
includes/admin/templates/dashboard/dashboard-mini-checkup-report.php CHANGED
@@ -2,30 +2,39 @@
2
  $results = empty( $results ) ? null : $results;
3
  $issue_count = empty( $issue_count ) ? 0 : $issue_count;
4
  $page_url = ! empty( $page_url ) ? $page_url : Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_CHECKUP );
 
5
  ?>
6
 
7
- <?php if ( $issue_count > 0 || ! empty( $results['error'] ) ) : ?>
8
  <div class="wds-report">
9
- <?php $this->_render( 'checkup/checkup-checkup-results', array( 'show_upsell_message' => false ) ); ?>
 
 
 
 
 
10
  </div>
11
  <?php else : ?>
12
  <p><?php esc_html_e( 'A comprehensive report on how optimized your website is for search engines and social media.', 'wds' ); ?></p>
13
  <?php
14
  $this->_render( 'notice', array(
15
  'message' => esc_html__( 'You have no outstanding SEO issues. Awesome work!', 'wds' ),
16
- 'class' => 'wds-notice-success',
17
  ) );
18
  ?>
19
  <?php endif; ?>
20
 
21
- <div class="wds-box-report-details wds-box-footer">
22
- <a href="<?php echo esc_attr( $page_url ); ?>#tab_checkup"
23
- class="button button-small button-dark button-dark-o wds-dash-view-report-button">
 
24
 
25
- <?php esc_html_e( 'View Report', 'wds' ); ?>
26
- </a>
27
- <?php if ( ! empty( $reporting_enabled ) ) : ?>
28
- <span
29
- class="wds-box-stat-value wds-box-stat-value-success"><?php esc_html_e( 'Automatic checkups are enabled', 'wds' ); ?></span>
30
- <?php endif; ?>
31
- </div>
 
 
2
  $results = empty( $results ) ? null : $results;
3
  $issue_count = empty( $issue_count ) ? 0 : $issue_count;
4
  $page_url = ! empty( $page_url ) ? $page_url : Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_CHECKUP );
5
+ $has_errors = ! empty( $results['error'] );
6
  ?>
7
 
8
+ <?php if ( $issue_count > 0 || $has_errors ) : ?>
9
  <div class="wds-report">
10
+ <?php if ( ! $has_errors ): ?>
11
+ <p>
12
+ <?php esc_html_e( 'A comprehensive report on how optimized your website is for search engines and social media.', 'wds' ); ?>
13
+ </p>
14
+ <?php endif; ?>
15
+ <?php $this->_render( 'checkup/checkup-results-inner', array( 'results' => $results ) ); ?>
16
  </div>
17
  <?php else : ?>
18
  <p><?php esc_html_e( 'A comprehensive report on how optimized your website is for search engines and social media.', 'wds' ); ?></p>
19
  <?php
20
  $this->_render( 'notice', array(
21
  'message' => esc_html__( 'You have no outstanding SEO issues. Awesome work!', 'wds' ),
22
+ 'class' => 'sui-notice-success',
23
  ) );
24
  ?>
25
  <?php endif; ?>
26
 
27
+ <?php if ( ! $has_errors ): ?>
28
+ <div class="wds-space-between">
29
+ <a href="<?php echo esc_attr( $page_url ); ?>&tab=tab_checkup"
30
+ class="sui-button sui-button-ghost">
31
 
32
+ <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'View Report', 'wds' ); ?>
33
+ </a>
34
+ <small>
35
+ <?php echo empty( $reporting_enabled )
36
+ ? esc_html__( 'Automatic checkups are disabled', 'wds' )
37
+ : esc_html__( 'Automatic checkups are enabled', 'wds' ); ?>
38
+ </small>
39
+ </div>
40
+ <?php endif; ?>
includes/admin/templates/dashboard/dashboard-top.php CHANGED
@@ -1,4 +1,11 @@
1
  <?php
 
 
 
 
 
 
 
2
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
3
  $last_checked = (boolean) $service->get_last_checked_timestamp();
4
  $in_progress = $service->in_progress();
@@ -6,108 +13,129 @@ $last_checked_timestamp = $service->get_last_checked( get_option( 'date_format'
6
  $checkup_url = Smartcrawl_Settings_Dashboard::checkup_url();
7
  $options = $_view['options'];
8
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
9
- $sitemap_enabled = smartcrawl_get_array_value( $options, 'sitemap' );
10
  $results = $last_checked ? $service->result() : array();
11
  $counts = smartcrawl_get_array_value( $results, 'counts' );
12
- $score = smartcrawl_get_array_value( $results, 'score' );
13
  $checkup_enabled = smartcrawl_get_array_value( $options, 'checkup' );
 
14
  $dependents = array( Smartcrawl_Settings_Dashboard::BOX_SITEMAP, Smartcrawl_Settings_Dashboard::BOX_SEO_CHECKUP );
15
  $dependents_attr = implode( ';', $dependents );
 
16
 
17
  $issue_count = 0;
18
  if ( null === $score || false === $score ) {
19
- $score_class = 'wds-score-invalid';
20
  } else {
21
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
22
- $score_class = $issue_count > 0 ? 'wds-score-warning' : 'wds-score-success';
23
  }
 
24
  ?>
25
 
26
- <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>"
27
- class="wds-seo-checkup-stats wds-report-stats wds-dash-stats dev-box"
28
- data-issue-count="<?php echo intval( $issue_count ); ?>"
29
- data-dependent="<?php echo esc_attr( $dependents_attr ); ?>">
30
 
31
- <div class="wds-report-score">
32
- <?php if ( ! $checkup_enabled ): ?>
33
- <div class="wds-last-checkup-never">
34
- <span class="wds-strong-text"><?php esc_html_e( 'Welcome!', 'wds' ); ?></span>
35
- <p class="wds-small-text">
36
- <?php esc_html_e( 'Activate SEO checkup to see what needs improving!', 'wds' ); ?>
37
- </p>
38
- <button type="button"
39
- data-option-id="<?php echo esc_attr( $option_name ); ?>"
40
- data-flag="<?php echo esc_attr( 'checkup' ); ?>"
41
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
42
- <?php esc_html_e( 'Activate', 'wds' ); ?>
43
- </button>
44
- </div>
45
- <?php elseif ( $in_progress ) : ?>
46
- <div class="wds-last-checkup-never">
47
- <span class="wds-strong-text"><?php esc_html_e( 'Welcome!', 'wds' ); ?></span>
48
- <p class="wds-small-text">
49
- <?php esc_html_e( 'Please wait while we finish the checkup ...', 'wds' ); ?>
50
- </p>
51
- <div class="wds-box-refresh-required"></div>
52
- </div>
53
- <?php elseif ( ! $last_checked ) : ?>
54
- <div class="wds-last-checkup-never">
55
- <span class="wds-strong-text"><?php esc_html_e( 'Welcome!', 'wds' ); ?></span>
56
- <p class="wds-small-text">
57
- <?php esc_html_e( 'Run your first SEO checkup to see what needs improving!', 'wds' ); ?>
58
- </p>
59
- <a href="<?php echo esc_attr( $checkup_url ); ?>"
60
- class="button button-small">
61
-
62
- <?php esc_html_e( 'Run checkup', 'wds' ); ?>
63
- </a>
64
- </div>
65
- <?php else : ?>
66
- <div class="wds-score <?php echo esc_attr( $score_class ); ?>">
67
- <?php echo esc_html( intval( $score ) ); ?><span
68
- class="wds-total"><?php esc_html_e( '/100', 'wds' ); ?></span>
69
- </div>
70
- <div class="wds-small-text"><?php esc_html_e( 'Current SEO Score', 'wds' ); ?></div>
71
- <?php endif; ?>
72
  </div>
73
 
74
- <div>
75
- <div class="wds-stacked-stats">
76
- <div>
77
- <div class="wds-stat-name"><?php esc_html_e( 'Last checkup:', 'wds' ); ?></div>
78
- <div class="wds-stat-value">
79
- <?php echo $in_progress ? esc_html__( 'In Progress', 'wds' ) : esc_html( $last_checked_timestamp ); ?>
80
- </div>
81
- </div>
 
 
 
 
82
 
83
- <div>
84
- <div class="wds-stat-name"><?php esc_html_e( 'Sitemap:', 'wds' ); ?></div>
85
- <div class="wds-stat-value">
86
- <?php if ( $sitemap_enabled ) : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
- <?php
89
- $this->_render( 'url-crawl-master', array(
90
- 'ready_template' => 'dashboard/dashboard-url-crawl-stats',
91
- 'progress_template' => 'dashboard/dashboard-url-crawl-in-progress-small',
92
- 'no_data_template' => 'dashboard/dashboard-url-crawl-no-data-small',
93
- ) );
94
- ?>
 
 
 
 
 
 
 
 
95
 
96
- <?php else : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
97
 
98
- <button type="button"
99
- data-option-id="<?php echo esc_attr( $option_name ); ?>"
100
- data-flag="<?php echo 'sitemap'; ?>"
101
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request">
 
 
 
102
 
103
- <?php esc_html_e( 'Activate Sitemap', 'wds' ); ?>
104
- </button>
 
 
 
 
 
105
 
106
- <?php endif; ?>
107
- </div>
108
- </div>
109
- </div>
110
- </div>
111
 
 
 
 
 
 
 
 
 
112
 
113
- </section>
 
 
 
 
 
 
1
  <?php
2
+ $checkup_available = is_main_site() && smartcrawl_subsite_setting_page_enabled( 'wds_checkup' );
3
+ $sitemap_crawler_available = is_main_site() && smartcrawl_subsite_setting_page_enabled( 'wds_sitemap' );
4
+
5
+ if ( ! $checkup_available && ! $sitemap_crawler_available ) {
6
+ return;
7
+ }
8
+
9
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
10
  $last_checked = (boolean) $service->get_last_checked_timestamp();
11
  $in_progress = $service->in_progress();
13
  $checkup_url = Smartcrawl_Settings_Dashboard::checkup_url();
14
  $options = $_view['options'];
15
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
16
+ $sitemap_enabled = Smartcrawl_Settings::get_setting( 'sitemap' );
17
  $results = $last_checked ? $service->result() : array();
18
  $counts = smartcrawl_get_array_value( $results, 'counts' );
 
19
  $checkup_enabled = smartcrawl_get_array_value( $options, 'checkup' );
20
+ $score = smartcrawl_get_array_value( $results, 'score' );
21
  $dependents = array( Smartcrawl_Settings_Dashboard::BOX_SITEMAP, Smartcrawl_Settings_Dashboard::BOX_SEO_CHECKUP );
22
  $dependents_attr = implode( ';', $dependents );
23
+ $is_member = empty( $_view['is_member'] ) ? false : true;
24
 
25
  $issue_count = 0;
26
  if ( null === $score || false === $score ) {
27
+ $score_class = 'sui-icon-info sui-invalid';
28
  } else {
29
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
30
+ $score_class = $issue_count > 0 ? 'sui-icon-info sui-warning' : 'sui-icon-check-tick sui-success';
31
  }
32
+ $whitelabel_class = Smartcrawl_White_Label::get()->summary_class();
33
  ?>
34
 
35
+ <div id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>"
36
+ class="sui-box sui-summary sui-summary-sm wds-dashboard-widget <?php echo esc_attr( $whitelabel_class ); ?>"
37
+ data-issue-count="<?php echo intval( $issue_count ); ?>"
38
+ data-dependent="<?php echo esc_attr( $dependents_attr ); ?>">
39
 
40
+ <div class="sui-summary-image-space">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  </div>
42
 
43
+ <div class="sui-summary-segment">
44
+ <?php if ( $checkup_available ): ?>
45
+ <?php if ( ! $checkup_enabled ): ?>
46
+ <div class="wds-summary-message">
47
+ <strong><?php esc_html_e( 'Welcome!', 'wds' ); ?></strong>
48
+ <p>
49
+ <small><?php esc_html_e( 'Activate SEO checkup to see what needs improving!', 'wds' ); ?></small>
50
+ </p>
51
+ <button type="button"
52
+ data-option-id="<?php echo esc_attr( $option_name ); ?>"
53
+ data-flag="<?php echo esc_attr( 'checkup' ); ?>"
54
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
55
 
56
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
57
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
58
+ </button>
59
+ </div>
60
+ <?php elseif ( $in_progress ) : ?>
61
+ <div class="wds-summary-message">
62
+ <strong><?php esc_html_e( 'Welcome!', 'wds' ); ?></strong>
63
+ <p>
64
+ <small><?php esc_html_e( 'Please wait while we finish the checkup ...', 'wds' ); ?></small>
65
+ </p>
66
+ </div>
67
+ <?php elseif ( ! $last_checked ) : ?>
68
+ <div class="wds-summary-message">
69
+ <strong><?php esc_html_e( 'Welcome!', 'wds' ); ?></strong>
70
+ <p>
71
+ <small><?php esc_html_e( 'Run your first SEO checkup to see what needs improving!', 'wds' ); ?></small>
72
+ </p>
73
+ <a href="<?php echo esc_attr( $checkup_url ); ?>"
74
+ class="sui-button sui-button-blue">
75
+ <i class="sui-icon-plus" aria-hidden="true"></i>
76
 
77
+ <?php esc_html_e( 'Run checkup', 'wds' ); ?>
78
+ </a>
79
+ </div>
80
+ <?php else : ?>
81
+ <div class="sui-summary-details">
82
+ <div class="wds-checkup-summary">
83
+ <span class="sui-summary-large"><?php echo esc_html( intval( $score ) ); ?></span>
84
+ <i class="<?php echo esc_attr( $score_class ); ?>"></i>
85
+ <span class="sui-summary-percent">/100</span>
86
+ <span class="sui-summary-sub"><?php esc_html_e( 'Current SEO Score', 'wds' ); ?></span>
87
+ </div>
88
+ </div>
89
+ <?php endif; ?>
90
+ <?php endif; ?>
91
+ </div>
92
 
93
+ <div class="sui-summary-segment">
94
+ <ul class="sui-list">
95
+ <?php if ( $checkup_available ): ?>
96
+ <li>
97
+ <span class="sui-list-label"><?php esc_html_e( 'Last checkup', 'wds' ); ?></span>
98
+ <span class="sui-list-detail">
99
+ <?php if ( $checkup_enabled && $in_progress ): ?>
100
+ <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <small><?php echo esc_html__( 'Checkup in progress ...', 'wds' ); ?></small></p>
101
+ <?php else: ?>
102
+ <p><small><?php echo esc_html( $last_checked_timestamp ); ?></small></p>
103
+ <?php endif; ?>
104
+ </span>
105
+ </li>
106
+ <?php endif; ?>
107
 
108
+ <?php if ( $sitemap_crawler_available ): ?>
109
+ <li>
110
+ <span class="sui-list-label"><?php esc_html_e( 'Sitemap', 'wds' ); ?></span>
111
+ <span class="sui-list-detail">
112
+ <?php if ( ! $is_member ) : ?>
113
+ <span class="sui-tag sui-tag-inactive"><?php esc_html_e( 'No Data Available', 'wds' ); ?></span>
114
+ <?php elseif ( $sitemap_enabled ) : ?>
115
 
116
+ <?php
117
+ $this->_render( 'url-crawl-master', array(
118
+ 'ready_template' => 'dashboard/dashboard-url-crawl-stats',
119
+ 'progress_template' => 'dashboard/dashboard-url-crawl-in-progress-small',
120
+ 'no_data_template' => 'dashboard/dashboard-url-crawl-no-data-small',
121
+ ) );
122
+ ?>
123
 
124
+ <?php else : ?>
 
 
 
 
125
 
126
+ <button type="button"
127
+ data-option-id="<?php echo esc_attr( $option_name ); ?>"
128
+ data-flag="<?php echo 'sitemap'; ?>"
129
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
130
+
131
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate Sitemap', 'wds' ); ?></span>
132
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
133
+ </button>
134
 
135
+ <?php endif; ?>
136
+ </span>
137
+ </li>
138
+ <?php endif; ?>
139
+ </ul>
140
+ </div>
141
+ </div>
includes/admin/templates/dashboard/dashboard-url-crawl-in-progress-small.php CHANGED
@@ -1,2 +1,5 @@
1
- <div class="wds-box-refresh-required"></div>
2
- <span class="wds-crawl-in-progress"><?php esc_html_e( 'Crawl in progress ...', 'wds' ); ?></span>
 
 
 
1
+ <p>
2
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
3
+ <small><?php esc_html_e( 'Crawl in progress ...', 'wds' ); ?></small>
4
+ <span class="wds-box-refresh-required"></span>
5
+ </p>
includes/admin/templates/dashboard/dashboard-url-crawl-in-progress.php CHANGED
@@ -2,10 +2,17 @@
2
  $progress = empty( $progress ) ? 0 : $progress;
3
  ?>
4
  <div class="wds-box-refresh-required"></div>
5
- <p class="wds-small-text"><?php esc_html_e( 'SmartCrawl is performing a URL crawl, please wait…', 'wds' ); ?></p>
 
 
6
 
7
  <?php
8
  $this->_render( 'progress-bar', array(
9
- 'progress' => $progress,
 
 
 
 
 
10
  ) );
11
  ?>
2
  $progress = empty( $progress ) ? 0 : $progress;
3
  ?>
4
  <div class="wds-box-refresh-required"></div>
5
+ <p>
6
+ <small><?php esc_html_e( 'SmartCrawl is performing a URL crawl, please wait …', 'wds' ); ?></small>
7
+ </p>
8
 
9
  <?php
10
  $this->_render( 'progress-bar', array(
11
+ 'progress' => $progress,
12
+ 'progress_state' => esc_html__( 'Crawl in progress...', 'wds' ),
13
+ ) );
14
+
15
+ $this->_render( 'progress-notice', array(
16
+ 'message' => 'You can always come back later. SmartCrawl will send you an email to %s with the results of the crawl.',
17
  ) );
18
  ?>
includes/admin/templates/dashboard/dashboard-url-crawl-no-data-small.php CHANGED
@@ -1,5 +1,5 @@
1
- <div class="wds-box-crawl-stats">
2
- <span class="wds-issues wds-issues-invalid">
3
  <?php esc_html_e( 'No Data Available', 'wds' ); ?>
4
  </span>
5
  </div>
1
+ <div class="wds-right">
2
+ <span class="sui-tag sui-tag-inactive">
3
  <?php esc_html_e( 'No Data Available', 'wds' ); ?>
4
  </span>
5
  </div>
includes/admin/templates/dashboard/dashboard-url-crawl-stats.php CHANGED
@@ -7,18 +7,27 @@ if ( is_null( $report ) ) {
7
 
8
  $active_issues = $report->get_issues_count();
9
  $missing_urls = $report->get_issues_count( 'sitemap' );
 
 
 
 
 
 
 
 
10
  ?>
11
 
12
  <?php if ( $active_issues > 0 ) : ?>
13
- <div class="wds-box-crawl-stats">
14
- <span class="wds-issues wds-issues-warning wds-has-tooltip"
15
- data-content="<?php printf( esc_attr__( 'You have %s sitemap issues', 'wds' ), intval( $active_issues ) ); ?>">
16
 
17
- <?php echo intval( $active_issues ); ?><?php esc_html_e( ' issues', 'wds' ); ?>
18
  </span>
19
- <span
20
- class="wds-issues wds-issues-invalid"><?php echo intval( $missing_urls ); ?><?php esc_html_e( ' missing URLs', 'wds' ); ?></span>
 
 
 
21
  </div>
22
- <?php else : ?>
23
- <span class="wds-box-stat-value wds-box-stat-value-success"><?php esc_html_e( 'No issues', 'wds' ); ?></span>
24
  <?php endif; ?>
7
 
8
  $active_issues = $report->get_issues_count();
9
  $missing_urls = $report->get_issues_count( 'sitemap' );
10
+ $active_issues_tooltip = _n( 'You have %s sitemap issue', 'You have %s sitemap issues', $active_issues, 'wds' );
11
+ $active_issues_tooltip = sprintf( $active_issues_tooltip, $active_issues );
12
+
13
+ $active_issues_tag = _n( '%d issue', '%d issues', $active_issues, 'wds' );
14
+ $active_issues_tag = sprintf( $active_issues_tag, $active_issues );
15
+
16
+ $missing_urls_tag = _n( '%d missing URL', '%d missing URLs', $missing_urls, 'wds' );
17
+ $missing_urls_tag = sprintf( $missing_urls_tag, $missing_urls );
18
  ?>
19
 
20
  <?php if ( $active_issues > 0 ) : ?>
21
+ <div class="wds-right">
22
+ <span class="sui-tag sui-tag-warning sui-tooltip"
23
+ data-tooltip="<?php echo esc_attr( $active_issues_tooltip ); ?>">
24
 
25
+ <?php echo esc_html( $active_issues_tag ); ?>
26
  </span>
27
+ <span class="sui-tag sui-tag-inactive"><?php echo esc_html( $missing_urls_tag ); ?></span>
28
+ </div>
29
+ <?php else: ?>
30
+ <div class="wds-right">
31
+ <small><?php esc_html_e( 'No issues', 'wds' ); ?></small>
32
  </div>
 
 
33
  <?php endif; ?>
includes/admin/templates/dashboard/dashboard-widget-advanced-tools.php CHANGED
@@ -10,103 +10,116 @@ $redirection_count = count( $redirection_model->get_all_redirections() );
10
 
11
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
12
  $options = $_view['options'];
13
- $autolinking_enabled = smartcrawl_get_array_value( $options, 'autolinks' );
14
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
15
  $is_member = $service->is_member();
16
- $moz_connected = ! empty( $options['access-id'] ) && ! empty( $options['secret-key'] );
 
 
17
  ?>
18
 
19
- <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_ADVANCED_TOOLS ); ?>" class="dev-box">
20
- <div class="box-title">
21
- <div class="buttons buttons-icon">
22
- <a href="<?php echo esc_attr( $page_url ); ?>" class="wds-settings-link">
23
- <i class="wds-icon-arrow-right-carats"></i>
24
- </a>
25
- </div>
26
- <h3>
27
- <i class="wds-icon-wand-magic"></i> <?php esc_html_e( 'Advanced Tools', 'wds' ); ?>
28
  </h3>
29
  </div>
30
 
31
- <div class="box-content">
32
  <p><?php esc_html_e( 'Advanced tools focus on the finer details of SEO including internal linking, redirections and Moz analysis.', 'wds' ); ?></p>
33
 
34
- <div class="wds-separator-top">
35
- <span class="wds-small-text"><strong><?php esc_html_e( 'URL Redirects', 'wds' ); ?></strong></span>
36
- <span class="wds-box-stat-value"><?php echo esc_html( $redirection_count ); ?>
 
 
 
 
 
 
 
 
 
 
37
  </div>
38
 
39
- <div class="wds-separator-top cf">
40
- <span class="wds-small-text"><strong><?php esc_html_e( 'Moz Integration', 'wds' ); ?></strong></span>
41
 
42
  <?php if ( $moz_connected ) : ?>
43
- <span class="wds-box-stat-value">
44
- <a href="<?php echo esc_attr( $page_url ); ?>#tab_moz"
45
- class="button button-small button-dark button-dark-o">
46
 
47
- <?php esc_html_e( 'View Report', 'wds' ); ?>
48
- </a>
49
- </span>
50
  <?php else : ?>
51
- <p class="wds-small-text">
52
- <?php esc_html_e( 'Moz provides reports that tell you how your site stacks up against the competition with all of the important SEO measurement tools.', 'wds' ); ?>
53
  </p>
54
- <a href="<?php echo esc_attr( $page_url ); ?>#tab_moz"
55
- class="button button-small">
56
 
57
  <?php esc_html_e( 'Connect', 'wds' ); ?>
58
  </a>
59
  <?php endif; ?>
60
  </div>
61
 
62
- <div
63
- class="wds-separator-top wds-autolinking-section <?php echo ! $is_member ? 'wds-box-blocked-area' : ''; ?>">
64
- <span class="wds-small-text"><strong><?php esc_html_e( 'Automatic Linking', 'wds' ); ?></strong></span>
 
 
 
 
 
 
 
 
65
  <?php if ( $autolinking_enabled && $is_member ) : ?>
66
- <span
67
- class="wds-box-stat-value wds-box-stat-value-success"><?php esc_html_e( 'Active', 'wds' ); ?></span>
 
68
  <?php else : ?>
69
- <p class="wds-small-text">
70
- <?php esc_html_e( 'Configure SmartCrawl to automatically link certain key words to a page on your blog or even a whole new site all together.', 'wds' ); ?>
71
  </p>
72
  <button type="button"
73
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
74
  data-flag="<?php echo 'autolinks'; ?>"
75
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
76
 
77
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
78
  </button>
79
- <?php if ( ! $is_member ) : ?>
80
- <button class="wds-upgrade-button button-pro wds-has-tooltip"
81
- data-content="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>"
82
- type="button">
83
- <?php esc_html_e( 'Pro feature', 'wds' ); ?>
84
- </button>
85
- <?php endif; ?>
86
  <?php endif; ?>
87
  </div>
 
88
 
89
- <div class="wds-box-footer" style="margin-top: 0;">
 
90
  <a href="<?php echo esc_attr( $page_url ); ?>"
91
- class="button button-small button-dark button-dark-o wds-dash-configure-button">
92
 
93
- <?php esc_html_e( 'Configure', 'wds' ); ?>
 
94
  </a>
95
-
96
- <?php
97
- if ( ! $is_member ) {
98
-
99
- $this->_render( 'mascot-message', array(
100
- 'key' => 'seo-checkup-upsell',
101
- 'dismissible' => false,
102
- 'message' => sprintf(
103
- '%s <a href="#upgrade-to-pro">%s</a>',
104
- esc_html__( 'Upgrade to Pro and automatically link your articles both internally and externally with automatic linking - a favourite among SEO pros.', 'wds' ),
105
- esc_html__( '- Try SmartCrawl Pro FREE today!', 'wds' )
106
- ),
107
- ) );
108
- }
109
- ?>
110
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  </div>
112
  </section>
10
 
11
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
12
  $options = $_view['options'];
13
+ $autolinking_enabled = Smartcrawl_Settings::get_setting( 'autolinks' );
14
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
15
  $is_member = $service->is_member();
16
+ $moz_connected = Smartcrawl_Settings::get_setting( 'access-id' )
17
+ && Smartcrawl_Settings::get_setting( 'secret-key' );
18
+ $footer_class = $is_member ? 'sui-box-footer' : 'sui-box-body'; // Because the mascot message needs to be inside box body
19
  ?>
20
 
21
+ <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_ADVANCED_TOOLS ); ?>"
22
+ class="sui-box wds-dashboard-widget">
23
+ <div class="sui-box-header">
24
+ <h3 class="sui-box-title">
25
+ <i class="sui-icon-wand-magic" aria-hidden="true"></i> <?php esc_html_e( 'Advanced Tools', 'wds' ); ?>
 
 
 
 
26
  </h3>
27
  </div>
28
 
29
+ <div class="sui-box-body">
30
  <p><?php esc_html_e( 'Advanced tools focus on the finer details of SEO including internal linking, redirections and Moz analysis.', 'wds' ); ?></p>
31
 
32
+ <div class="wds-separator-top wds-draw-left-padded">
33
+ <small><strong><?php esc_html_e( 'URL Redirects', 'wds' ); ?></strong></small>
34
+ <?php if ( empty( $redirection_count ) ): ?>
35
+ <p>
36
+ <small><?php esc_html_e( 'Automatically redirect traffic from one URL to another.', 'wds' ); ?></small>
37
+ </p>
38
+ <a href="<?php echo esc_attr( $page_url ); ?>&tab=tab_url_redirection"
39
+ class="sui-button sui-button-blue">
40
+ <?php esc_html_e( 'Add Redirect', 'wds' ); ?>
41
+ </a>
42
+ <?php else: ?>
43
+ <span class="wds-right"><small><?php echo esc_html( $redirection_count ); ?></small></span>
44
+ <?php endif; ?>
45
  </div>
46
 
47
+ <div class="wds-separator-top wds-draw-left-padded <?php echo $moz_connected ? 'wds-space-between' : ''; ?>">
48
+ <small><strong><?php esc_html_e( 'Moz Integration', 'wds' ); ?></strong></small>
49
 
50
  <?php if ( $moz_connected ) : ?>
51
+ <a href="<?php echo esc_attr( $page_url ); ?>&tab=tab_moz"
52
+ class="sui-button sui-button-ghost">
 
53
 
54
+ <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'View Report', 'wds' ); ?>
55
+ </a>
 
56
  <?php else : ?>
57
+ <p>
58
+ <small><?php esc_html_e( 'Moz provides reports that tell you how your site stacks up against the competition with all of the important SEO measurement tools.', 'wds' ); ?></small>
59
  </p>
60
+ <a href="<?php echo esc_attr( $page_url ); ?>&tab=tab_moz"
61
+ class="sui-button sui-button-blue">
62
 
63
  <?php esc_html_e( 'Connect', 'wds' ); ?>
64
  </a>
65
  <?php endif; ?>
66
  </div>
67
 
68
+ <div class="wds-separator-top <?php echo ! $is_member ? 'wds-box-blocked-area wds-draw-down wds-draw-left' : 'wds-draw-left-padded'; ?>">
69
+ <small><strong><?php esc_html_e( 'Automatic Linking', 'wds' ); ?></strong></small>
70
+ <?php if ( ! $is_member ) : ?>
71
+ <a href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_dash_autolinking_pro_tag"
72
+ target="_blank">
73
+ <span class="sui-tag sui-tag-pro sui-tooltip"
74
+ data-tooltip="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>">
75
+ <?php esc_html_e( 'Pro', 'wds' ); ?>
76
+ </span>
77
+ </a>
78
+ <?php endif; ?>
79
  <?php if ( $autolinking_enabled && $is_member ) : ?>
80
+ <div class="wds-right">
81
+ <small><?php esc_html_e( 'Active', 'wds' ); ?></small>
82
+ </div>
83
  <?php else : ?>
84
+ <p>
85
+ <small><?php esc_html_e( 'Configure SmartCrawl to automatically link certain key words to a page on your blog or even a whole new site all together.', 'wds' ); ?></small>
86
  </p>
87
  <button type="button"
88
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
89
  data-flag="<?php echo 'autolinks'; ?>"
90
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
91
 
92
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
93
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
94
  </button>
 
 
 
 
 
 
 
95
  <?php endif; ?>
96
  </div>
97
+ </div>
98
 
99
+ <div class="<?php echo esc_attr( $footer_class ); ?>">
100
+ <div>
101
  <a href="<?php echo esc_attr( $page_url ); ?>"
102
+ class="sui-button sui-button-ghost">
103
 
104
+ <i class="sui-icon-wrench-tool"
105
+ aria-hidden="true"></i> <?php esc_html_e( 'Configure', 'wds' ); ?>
106
  </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  </div>
108
+
109
+ <?php
110
+ if ( ! $is_member ) {
111
+
112
+ $this->_render( 'mascot-message', array(
113
+ 'key' => 'seo-checkup-upsell',
114
+ 'dismissible' => false,
115
+ 'image_name' => 'mascot-message-advanced-tools',
116
+ 'message' => sprintf(
117
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_dash_reports_upsell_notice">%s</a>',
118
+ esc_html__( 'Upgrade to Pro and automatically link your articles both internally and externally with automatic linking - a favourite among SEO pros.', 'wds' ),
119
+ esc_html__( '- Try SmartCrawl Pro FREE today!', 'wds' )
120
+ ),
121
+ ) );
122
+ }
123
+ ?>
124
  </div>
125
  </section>
includes/admin/templates/dashboard/dashboard-widget-content-analysis.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
- $options = $_view['options'];
3
- $seo_analysis_enabled = smartcrawl_get_array_value( $options, 'analysis-seo' );
4
- $readability_analysis_enabled = smartcrawl_get_array_value( $options, 'analysis-readability' );
5
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
6
  $is_ajax_request = defined( 'DOING_AJAX' ) && DOING_AJAX;
7
  $refresh_required = ! $is_ajax_request && ( $seo_analysis_enabled || $readability_analysis_enabled );
@@ -19,15 +18,16 @@ if ( $readability_analysis_enabled ) {
19
  ?>
20
 
21
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_CONTENT_ANALYSIS ); ?>"
22
- class="dev-box <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
23
 
24
- <div class="box-title">
25
- <h3>
26
- <i class="wds-icon-magnifying-glass-search"></i> <?php esc_html_e( 'Content Analysis', 'wds' ); ?>
 
27
  </h3>
28
  </div>
29
 
30
- <div class="box-content">
31
  <p><?php esc_html_e( 'SEO and Readability Analysis recommend improvements to your content to give it the best chance of ranking highly, as well as being easy for average person to read.', 'wds' ); ?></p>
32
 
33
  <div class="wds-report">
@@ -36,18 +36,19 @@ if ( $readability_analysis_enabled ) {
36
  <?php $this->_render( 'dashboard/dashboard-content-analysis-seo-overview' ); ?>
37
  <?php endif; ?>
38
  <?php else : ?>
39
- <div class="wds-separator-top">
40
- <span class="wds-small-text"><strong><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></strong></span>
41
- <p class="wds-small-text">
42
- <?php esc_html_e( 'Analyses your content against recommend SEO practice and gives recommendations for improvement to make sure content is as optimized as possible.', 'wds' ); ?>
43
  </p>
44
  <button type="button"
45
  id="wds-activate-analysis-seo"
46
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
47
  data-flag="analysis-seo"
48
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
49
 
50
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
51
  </button>
52
  </div>
53
  <?php endif; ?>
@@ -57,29 +58,31 @@ if ( $readability_analysis_enabled ) {
57
  <?php $this->_render( 'dashboard/dashboard-content-analysis-readability-overview' ); ?>
58
  <?php endif; ?>
59
  <?php else : ?>
60
- <div class="wds-separator-top">
61
- <span class="wds-small-text"><strong><?php esc_html_e( 'Readability Analysis', 'wds' ); ?></strong></span>
62
- <p class="wds-small-text">
63
- <?php esc_html_e( 'Benchmarks the readability of your content for the average visitor and gives recommendations for improvement.', 'wds' ); ?>
64
  </p>
65
  <button type="button"
66
  id="wds-activate-analysis-readability"
67
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
68
  data-flag="analysis-readability"
69
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
70
 
71
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
72
  </button>
73
  </div>
74
  <?php endif; ?>
75
  </div>
 
76
 
77
- <div class="wds-box-footer">
78
- <a href="<?php echo esc_attr( admin_url( 'edit.php' ) ); ?>"
79
- class="button button-small button-dark button-dark-o wds-dash-edit-posts-button">
80
 
81
- <?php esc_html_e( 'Edit Posts', 'wds' ); ?>
82
- </a>
83
- </div>
84
  </div>
85
  </section>
1
  <?php
2
+ $seo_analysis_enabled = Smartcrawl_Settings::get_setting( 'analysis-seo' );
3
+ $readability_analysis_enabled = Smartcrawl_Settings::get_setting( 'analysis-readability' );
 
4
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
5
  $is_ajax_request = defined( 'DOING_AJAX' ) && DOING_AJAX;
6
  $refresh_required = ! $is_ajax_request && ( $seo_analysis_enabled || $readability_analysis_enabled );
18
  ?>
19
 
20
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_CONTENT_ANALYSIS ); ?>"
21
+ class="sui-box wds-dashboard-widget <?php echo esc_attr( implode( ' ', $classes ) ); ?>">
22
 
23
+ <div class="sui-box-header">
24
+ <h3 class="sui-box-title">
25
+ <i class="sui-icon-magnifying-glass-search"
26
+ aria-hidden="true"></i> <?php esc_html_e( 'Content Analysis', 'wds' ); ?>
27
  </h3>
28
  </div>
29
 
30
+ <div class="sui-box-body">
31
  <p><?php esc_html_e( 'SEO and Readability Analysis recommend improvements to your content to give it the best chance of ranking highly, as well as being easy for average person to read.', 'wds' ); ?></p>
32
 
33
  <div class="wds-report">
36
  <?php $this->_render( 'dashboard/dashboard-content-analysis-seo-overview' ); ?>
37
  <?php endif; ?>
38
  <?php else : ?>
39
+ <div class="wds-separator-top wds-draw-left-padded <?php echo ! $readability_analysis_enabled ? 'wds-separator-bottom' : ''; ?>">
40
+ <small><strong><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></strong></small>
41
+ <p>
42
+ <small><?php esc_html_e( 'Analyses your content against recommend SEO practice and gives recommendations for improvement to make sure content is as optimized as possible.', 'wds' ); ?></small>
43
  </p>
44
  <button type="button"
45
  id="wds-activate-analysis-seo"
46
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
47
  data-flag="analysis-seo"
48
+ class="wds-activate-component sui-button sui-button-blue wds-disabled-during-request">
49
 
50
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
51
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
52
  </button>
53
  </div>
54
  <?php endif; ?>
58
  <?php $this->_render( 'dashboard/dashboard-content-analysis-readability-overview' ); ?>
59
  <?php endif; ?>
60
  <?php else : ?>
61
+ <div>
62
+ <small><strong><?php esc_html_e( 'Readability Analysis', 'wds' ); ?></strong></small>
63
+ <p>
64
+ <small><?php esc_html_e( 'Benchmarks the readability of your content for the average visitor and gives recommendations for improvement.', 'wds' ); ?></small>
65
  </p>
66
  <button type="button"
67
  id="wds-activate-analysis-readability"
68
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
69
  data-flag="analysis-readability"
70
+ class="wds-activate-component sui-button sui-button-blue wds-disabled-during-request">
71
 
72
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
73
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
74
  </button>
75
  </div>
76
  <?php endif; ?>
77
  </div>
78
+ </div>
79
 
80
+ <div class="<?php echo $readability_analysis_enabled ? 'sui-box-body' : 'sui-box-footer'; ?>">
81
+ <a href="<?php echo esc_attr( admin_url( 'edit.php' ) ); ?>"
82
+ class="sui-button sui-button-ghost">
83
 
84
+ <i class="sui-icon-pencil"
85
+ aria-hidden="true"></i> <?php esc_html_e( 'Edit Posts', 'wds' ); ?>
86
+ </a>
87
  </div>
88
  </section>
includes/admin/templates/dashboard/dashboard-widget-onpage.php CHANGED
@@ -8,52 +8,50 @@ $public_post_types = get_post_types( array( 'public' => true ) );
8
  $show_on_front = get_option( 'show_on_front' );
9
  $options = $_view['options'];
10
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
11
- $onpage_enabled = smartcrawl_get_array_value( $options, 'onpage' );
12
  ?>
13
- <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_ONPAGE ); ?>" class="dev-box">
14
- <div class="box-title">
15
- <?php if ( $onpage_enabled ) : ?>
16
- <div class="buttons buttons-icon">
17
- <a href="<?php echo esc_attr( $page_url ); ?>">
18
- <i class="wds-icon-arrow-right-carats"></i>
19
- </a>
20
- </div>
21
- <?php endif; ?>
22
- <h3>
23
- <i class="wds-icon-pencil"></i> <?php esc_html_e( 'Titles & Meta', 'wds' ); ?>
24
  </h3>
25
  </div>
26
 
27
- <div class="box-content">
28
  <p><?php esc_html_e( 'Control how your website’s pages, posts and custom post types appear in search engines like Google and Bing.', 'wds' ); ?></p>
29
 
30
  <?php if ( $onpage_enabled ) : ?>
31
- <div class="wds-separator-top">
32
- <span class="wds-small-text"><strong><?php esc_html_e( 'Homepage', 'wds' ); ?></strong></span>
33
- <span class="wds-box-stat-value">
34
- <?php 'page' === $show_on_front ? esc_html_e( 'A Static Page', 'wds' ) : esc_html_e( 'Latest Posts', 'wds' ); ?>
35
  </span>
36
  </div>
37
 
38
- <div class="wds-separator-top">
39
- <span class="wds-small-text"><strong><?php esc_html_e( 'Public post types', 'wds' ); ?></strong></span>
40
- <span class="wds-box-stat-value"><?php echo esc_html( count( $public_post_types ) ); ?></span>
 
 
41
  </div>
 
 
 
 
 
 
42
 
43
- <div class="wds-box-footer">
44
- <a href="<?php echo esc_attr( $page_url ); ?>"
45
- class="button button-small button-dark button-dark-o wds-dash-configure-button">
46
-
47
- <?php esc_html_e( 'Configure', 'wds' ); ?>
48
- </a>
49
- </div>
50
  <?php else : ?>
51
  <button type="button"
52
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
53
  data-flag="<?php echo esc_attr( 'onpage' ); ?>"
54
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
55
 
56
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
57
  </button>
58
  <?php endif; ?>
59
  </div>
8
  $show_on_front = get_option( 'show_on_front' );
9
  $options = $_view['options'];
10
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
11
+ $onpage_enabled = Smartcrawl_Settings::get_setting( 'onpage' );
12
  ?>
13
+ <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_ONPAGE ); ?>" class="sui-box wds-dashboard-widget">
14
+ <div class="sui-box-header">
15
+ <h3 class="sui-box-title">
16
+ <i class="sui-icon-pencil" aria-hidden="true"></i><?php esc_html_e( 'Titles & Meta', 'wds' ); ?>
 
 
 
 
 
 
 
17
  </h3>
18
  </div>
19
 
20
+ <div class="sui-box-body">
21
  <p><?php esc_html_e( 'Control how your website’s pages, posts and custom post types appear in search engines like Google and Bing.', 'wds' ); ?></p>
22
 
23
  <?php if ( $onpage_enabled ) : ?>
24
+ <div class="wds-separator-top wds-draw-left-padded">
25
+ <small><strong><?php esc_html_e( 'Homepage', 'wds' ); ?></strong></small>
26
+ <span class="wds-right">
27
+ <small><?php 'page' === $show_on_front ? esc_html_e( 'A Static Page', 'wds' ) : esc_html_e( 'Latest Posts', 'wds' ); ?></small>
28
  </span>
29
  </div>
30
 
31
+ <div class="wds-separator-top wds-draw-left-padded">
32
+ <small><strong><?php esc_html_e( 'Public post types', 'wds' ); ?></strong></small>
33
+ <span class="wds-right">
34
+ <small><?php echo esc_html( count( $public_post_types ) ); ?></small>
35
+ </span>
36
  </div>
37
+ <?php endif; ?>
38
+ </div>
39
+ <div class="sui-box-footer">
40
+ <?php if ( $onpage_enabled ): ?>
41
+ <a href="<?php echo esc_attr( $page_url ); ?>"
42
+ class="sui-button sui-button-ghost">
43
 
44
+ <i class="sui-icon-wrench-tool"
45
+ aria-hidden="true"></i> <?php esc_html_e( 'Configure', 'wds' ); ?>
46
+ </a>
 
 
 
 
47
  <?php else : ?>
48
  <button type="button"
49
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
50
  data-flag="<?php echo esc_attr( 'onpage' ); ?>"
51
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
52
 
53
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
54
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
55
  </button>
56
  <?php endif; ?>
57
  </div>
includes/admin/templates/dashboard/dashboard-widget-seo-checkup.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
- if ( ! smartcrawl_subsite_setting_page_enabled( 'wds_checkup' ) ) {
 
3
  return;
4
  }
5
 
@@ -12,67 +13,97 @@ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
12
  $options = $_view['options'];
13
  $reporting_enabled = smartcrawl_get_array_value( $options, 'checkup-cron-enable' );
14
  $last_checked = (boolean) $service->get_last_checked_timestamp();
15
- $in_progress = $last_checked ? false : $service->in_progress();
16
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
17
  $checkup_enabled = smartcrawl_get_array_value( $options, 'checkup' );
18
  $checkup_text = esc_html__( 'Get a comprehensive report on how optimized your website is for search engines and social media. We recommend running this checkup first to see what needs improving.', 'wds' );
19
- $results = $in_progress ? array() : $service->result();
20
  $counts = smartcrawl_get_array_value( $results, 'counts' );
21
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
 
 
 
 
 
 
 
22
  ?>
23
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SEO_CHECKUP ); ?>"
24
  data-dependent="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>"
25
- class="dev-box">
26
- <div class="box-title">
27
- <?php if ( $checkup_enabled ) : ?>
28
- <div class="buttons buttons-icon">
29
- <a href="<?php echo esc_attr( $page_url ); ?>">
30
- <i class="wds-icon-arrow-right-carats"></i>
31
- </a>
32
- </div>
33
- <?php endif; ?>
34
- <h3>
35
- <i class="wds-icon-icon-smart-crawl"></i> <?php esc_html_e( 'SEO Checkup', 'wds' ); ?>
36
  <?php if ( $issue_count > 0 && $checkup_enabled ) : ?>
37
- <span class="wds-issues wds-issues-warning wds-has-tooltip"
38
- data-content="<?php printf( esc_attr__( 'You have %s outstanding SEO issues to fix up', 'wds' ), intval( $issue_count ) ); ?>">
39
- <?php echo intval( $issue_count ); ?>
40
- </span>
 
 
 
 
41
  <?php endif; ?>
42
- </h3>
43
- </div>
44
- <div class="box-content">
45
- <?php if ( $checkup_enabled ) : ?>
46
- <?php
47
- if ( ! $last_checked && ! $in_progress ) {
48
- ?>
49
- <p><?php echo esc_html( $checkup_text ); ?></p>
50
 
51
- <div class="wds-box-footer">
 
52
  <a href="<?php echo esc_attr( $checkup_url ); ?>"
53
- class="button button-small">
 
 
54
  <?php esc_html_e( 'Run checkup', 'wds' ); ?>
55
  </a>
56
  </div>
57
- <?php
58
- } elseif ( $service->in_progress() ) {
59
- $this->_render( 'dashboard/dashboard-checkup-progress' );
60
- } else {
61
- $this->_render( 'dashboard/dashboard-mini-checkup-report', array(
62
- 'results' => $results,
63
- 'issue_count' => $issue_count,
64
- ) );
65
- }
66
- ?>
67
- <?php else : ?>
68
- <p><?php echo esc_html( $checkup_text ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
69
  <button type="button"
70
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
71
  data-flag="<?php echo esc_attr( 'checkup' ); ?>"
72
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
73
 
74
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
75
  </button>
76
- <?php endif; ?>
77
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  </section>
1
  <?php
2
+ $checkup_available = is_main_site() && smartcrawl_subsite_setting_page_enabled( 'wds_checkup' );
3
+ if ( ! $checkup_available ) {
4
  return;
5
  }
6
 
13
  $options = $_view['options'];
14
  $reporting_enabled = smartcrawl_get_array_value( $options, 'checkup-cron-enable' );
15
  $last_checked = (boolean) $service->get_last_checked_timestamp();
16
+ $in_progress = $service->in_progress();
17
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
18
  $checkup_enabled = smartcrawl_get_array_value( $options, 'checkup' );
19
  $checkup_text = esc_html__( 'Get a comprehensive report on how optimized your website is for search engines and social media. We recommend running this checkup first to see what needs improving.', 'wds' );
20
+ $results = ! $in_progress && $last_checked ? $service->result() : array();
21
  $counts = smartcrawl_get_array_value( $results, 'counts' );
22
  $issue_count = intval( smartcrawl_get_array_value( $counts, 'warning' ) ) + intval( smartcrawl_get_array_value( $counts, 'critical' ) );
23
+ $checkup_issues_tooltip = _n(
24
+ 'You have %d outstanding SEO issue to fix up',
25
+ 'You have %d outstanding SEO issues to fix up',
26
+ $issue_count,
27
+ 'wds'
28
+ );
29
+ $checkup_issues_tooltip = sprintf( $checkup_issues_tooltip, $issue_count );
30
  ?>
31
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SEO_CHECKUP ); ?>"
32
  data-dependent="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>"
33
+ class="sui-box wds-dashboard-widget">
34
+ <div class="sui-box-header">
35
+ <h3 class="sui-box-title">
36
+ <i class="sui-icon-smart-crawl" aria-hidden="true"></i><?php esc_html_e( 'SEO Checkup', 'wds' ); ?>
37
+ </h3>
38
+ <?php if ( $checkup_enabled ): ?>
 
 
 
 
 
39
  <?php if ( $issue_count > 0 && $checkup_enabled ) : ?>
40
+ <div class="sui-actions-left">
41
+ <span class="sui-tag sui-tag-warning sui-tooltip"
42
+ data-tooltip="<?php echo esc_attr( $checkup_issues_tooltip ); ?>">
43
+ <?php echo intval( $issue_count ); ?>
44
+ </span>
45
+ </div>
46
+ <?php elseif ( $in_progress ): ?>
47
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
48
  <?php endif; ?>
 
 
 
 
 
 
 
 
49
 
50
+ <?php if ( $results ): ?>
51
+ <div class="sui-actions-right">
52
  <a href="<?php echo esc_attr( $checkup_url ); ?>"
53
+ class="sui-button sui-button-blue">
54
+ <i class="sui-icon-plus" aria-hidden="true"></i>
55
+
56
  <?php esc_html_e( 'Run checkup', 'wds' ); ?>
57
  </a>
58
  </div>
59
+ <?php endif; ?>
60
+ <?php endif; ?>
61
+ </div>
62
+ <div class="sui-box-body">
63
+ <?php
64
+ if (
65
+ ! $checkup_enabled
66
+ || ( ! $last_checked && ! $in_progress )
67
+ ) {
68
+ printf( '<p>%s</p>', esc_html( $checkup_text ) );
69
+ } elseif ( $in_progress ) {
70
+ $this->_render( 'dashboard/dashboard-checkup-progress' );
71
+ } else {
72
+ $this->_render( 'dashboard/dashboard-mini-checkup-report', array(
73
+ 'results' => $results,
74
+ 'issue_count' => $issue_count,
75
+ 'reporting_enabled' => $reporting_enabled,
76
+ ) );
77
+ }
78
+ ?>
79
+ </div>
80
+ <?php if ( ! $checkup_enabled ) : ?>
81
+ <div class="sui-box-footer">
82
  <button type="button"
83
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
84
  data-flag="<?php echo esc_attr( 'checkup' ); ?>"
85
+ class="wds-activate-component sui-button sui-button-blue wds-disabled-during-request">
86
 
87
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
88
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
89
  </button>
90
+ </div>
91
+ <?php elseif ( ! $last_checked && ! $in_progress ): ?>
92
+ <div class="sui-box-footer">
93
+ <a href="<?php echo esc_attr( $checkup_url ); ?>"
94
+ class="sui-button sui-button-blue">
95
+ <i class="sui-icon-plus" aria-hidden="true"></i>
96
+
97
+ <?php esc_html_e( 'Run checkup', 'wds' ); ?>
98
+ </a>
99
+
100
+ <span>
101
+ <small>
102
+ <?php echo empty( $reporting_enabled )
103
+ ? esc_html__( 'Automatic checkups are disabled', 'wds' )
104
+ : esc_html__( 'Automatic checkups are enabled', 'wds' ); ?>
105
+ </small>
106
+ </span>
107
+ </div>
108
+ <?php endif; ?>
109
  </section>
includes/admin/templates/dashboard/dashboard-widget-sitemap.php CHANGED
@@ -1,46 +1,44 @@
1
  <?php
2
- if ( ! smartcrawl_subsite_setting_page_enabled( 'wds_sitemap' ) ) {
 
 
3
  return;
4
  }
5
 
6
  $page_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SITEMAP );
7
  $options = $_view['options'];
8
- $sitemap_enabled = smartcrawl_get_array_value( $options, 'sitemap' );
9
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
10
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
11
  $is_member = $service->is_member();
12
  ?>
13
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SITEMAP ); ?>"
14
- class="dev-box"
15
  data-dependent="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>">
16
 
17
- <div class="box-title">
18
- <div class="buttons buttons-icon">
19
- <a href="<?php echo esc_attr( $page_url ); ?>">
20
- <i class="wds-icon-arrow-right-carats"></i>
21
- </a>
22
- </div>
23
- <h3>
24
- <i class="wds-icon-web-globe-world"></i> <?php esc_html_e( 'Sitemap', 'wds' ); ?>
25
- <?php
26
- if ( $sitemap_enabled ) {
27
- $this->_render( 'url-crawl-master', array(
28
- 'ready_template' => 'dashboard/dashboard-box-title-url-crawl-stats',
29
- ) );
30
- }
31
- ?>
32
  </h3>
 
 
 
 
 
 
 
 
33
  </div>
34
- <div class="box-content">
35
  <p><?php esc_html_e( 'Automatically generate detailed sitemaps to tell search engines what content you want them to crawl and index.', 'wds' ); ?></p>
36
 
37
- <div class="wds-separator-top">
38
- <span class="wds-small-text"><strong><?php esc_html_e( 'XML Sitemap', 'wds' ); ?></strong></span>
39
  <?php if ( $sitemap_enabled ) : ?>
40
 
41
  <?php
42
  $this->_render( 'notice', array(
43
- 'class' => 'wds-notice-success',
44
  'message' => sprintf(
45
  __( 'Your sitemap is available at %s', 'wds' ),
46
  sprintf( '<a target="_blank" href="%s">/sitemap.xml</a>', esc_attr( smartcrawl_get_sitemap_url() ) )
@@ -49,63 +47,70 @@ $is_member = $service->is_member();
49
  ?>
50
 
51
  <?php else : ?>
52
- <p class="wds-small-text">
53
- <?php esc_html_e( 'Enables an XML page that search engines will use to crawl and index your website pages.', 'wds' ); ?>
54
  </p>
55
 
56
  <?php
57
  $this->_render( 'dismissable-notice', array(
58
  'key' => 'dashboard-sitemap-disabled-warning',
59
  'message' => __( 'Your sitemap is currently disabled. We highly recommend you enable this feature if you don’t already have a sitemap.', 'wds' ),
60
- 'class' => 'wds-notice-warning',
61
  ) );
62
  ?>
63
  <button type="button"
64
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
65
  data-flag="<?php echo 'sitemap'; ?>"
66
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
67
 
68
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
69
  </button>
70
  <?php endif; ?>
71
  </div>
72
 
73
- <div class="wds-separator-top <?php echo $is_member ? '' : 'wds-box-blocked-area'; ?>">
74
- <span class="wds-small-text"><strong><?php esc_html_e( 'URL Crawler', 'wds' ); ?></strong></span>
75
- <?php if ( $sitemap_enabled ) : ?>
76
- <?php
77
- $this->_render( 'url-crawl-master', array(
78
- 'ready_template' => 'dashboard/dashboard-url-crawl-stats',
79
- 'progress_template' => 'dashboard/dashboard-url-crawl-in-progress',
80
- 'no_data_template' => 'dashboard/dashboard-url-crawl-no-data-small',
81
- ) );
82
- ?>
83
- <?php else : ?>
84
  <?php if ( $is_member ) : ?>
85
- <div class="wds-box-crawl-stats">
86
- <span class="wds-issues wds-issues-invalid">
 
 
 
 
 
 
 
 
 
 
 
87
  <?php esc_html_e( 'Sitemaps must be activated', 'wds' ); ?>
88
- </span>
89
- </div>
90
  <?php else : ?>
91
- <p class="wds-small-text">
92
- <?php esc_html_e( 'Automatically schedule SmartCrawl to run check for URLs that are missing from your Sitemap.', 'wds' ); ?>
 
 
 
 
 
 
 
93
  </p>
94
- <button class="wds-upgrade-button button-pro wds-has-tooltip"
95
- data-content="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>"
96
- type="button">
97
- <?php esc_html_e( 'Pro feature', 'wds' ); ?>
98
- </button>
99
  <?php endif; ?>
100
- <?php endif; ?>
101
- </div>
 
102
 
103
- <div class="wds-box-footer" style="<?php echo $is_member ? '' : 'margin-top:0;'; ?>">
104
- <a href="<?php echo esc_attr( $page_url ); ?>"
105
- class="button button-small button-dark button-dark-o wds-dash-configure-button">
106
 
107
- <?php esc_html_e( 'Configure', 'wds' ); ?>
108
- </a>
109
- </div>
110
  </div>
111
  </section>
1
  <?php
2
+ $sitemap_available = smartcrawl_subsite_setting_page_enabled( 'wds_sitemap' );
3
+ $sitemap_crawler_available = is_main_site();
4
+ if ( ! $sitemap_available ) {
5
  return;
6
  }
7
 
8
  $page_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SITEMAP );
9
  $options = $_view['options'];
10
+ $sitemap_enabled = Smartcrawl_Settings::get_setting( 'sitemap' );
11
  $option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
12
  $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_CHECKUP );
13
  $is_member = $service->is_member();
14
  ?>
15
  <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SITEMAP ); ?>"
16
+ class="sui-box wds-dashboard-widget"
17
  data-dependent="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_TOP_STATS ); ?>">
18
 
19
+ <div class="sui-box-header">
20
+ <h3 class="sui-box-title">
21
+ <i class="sui-icon-web-globe-world"></i> <?php esc_html_e( 'Sitemap', 'wds' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
22
  </h3>
23
+ <?php
24
+ if ( $sitemap_enabled && $is_member && $sitemap_crawler_available ) {
25
+ $this->_render( 'url-crawl-master', array(
26
+ 'progress_template' => 'dashboard/dashboard-box-title-url-crawl-in-progress',
27
+ 'ready_template' => 'dashboard/dashboard-box-title-url-crawl-stats',
28
+ ) );
29
+ }
30
+ ?>
31
  </div>
32
+ <div class="sui-box-body">
33
  <p><?php esc_html_e( 'Automatically generate detailed sitemaps to tell search engines what content you want them to crawl and index.', 'wds' ); ?></p>
34
 
35
+ <div class="wds-separator-top wds-draw-left-padded">
36
+ <small><strong><?php esc_html_e( 'XML Sitemap', 'wds' ); ?></strong></small>
37
  <?php if ( $sitemap_enabled ) : ?>
38
 
39
  <?php
40
  $this->_render( 'notice', array(
41
+ 'class' => 'sui-notice-info',
42
  'message' => sprintf(
43
  __( 'Your sitemap is available at %s', 'wds' ),
44
  sprintf( '<a target="_blank" href="%s">/sitemap.xml</a>', esc_attr( smartcrawl_get_sitemap_url() ) )
47
  ?>
48
 
49
  <?php else : ?>
50
+ <p>
51
+ <small><?php esc_html_e( 'Enables an XML page that search engines will use to crawl and index your website pages.', 'wds' ); ?></small>
52
  </p>
53
 
54
  <?php
55
  $this->_render( 'dismissable-notice', array(
56
  'key' => 'dashboard-sitemap-disabled-warning',
57
  'message' => __( 'Your sitemap is currently disabled. We highly recommend you enable this feature if you don’t already have a sitemap.', 'wds' ),
58
+ 'class' => 'sui-notice-warning',
59
  ) );
60
  ?>
61
  <button type="button"
62
  data-option-id="<?php echo esc_attr( $option_name ); ?>"
63
  data-flag="<?php echo 'sitemap'; ?>"
64
+ class="wds-activate-component sui-button sui-button-blue wds-disabled-during-request">
65
 
66
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
67
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
68
  </button>
69
  <?php endif; ?>
70
  </div>
71
 
72
+ <?php if ( $sitemap_crawler_available ): ?>
73
+ <div class="wds-separator-top cf <?php echo $is_member ? 'wds-draw-left-padded' : 'wds-box-blocked-area wds-draw-down wds-draw-left'; ?>">
74
+ <small><strong><?php esc_html_e( 'URL Crawler', 'wds' ); ?></strong></small>
 
 
 
 
 
 
 
 
75
  <?php if ( $is_member ) : ?>
76
+ <?php if ( $sitemap_enabled ) : ?>
77
+ <?php
78
+ $this->_render( 'url-crawl-master', array(
79
+ 'ready_template' => 'dashboard/dashboard-url-crawl-stats',
80
+ 'progress_template' => 'dashboard/dashboard-url-crawl-in-progress',
81
+ 'no_data_template' => 'dashboard/dashboard-url-crawl-no-data-small',
82
+ ) );
83
+ ?>
84
+ <?php else : ?>
85
+ <p>
86
+ <small><?php esc_html_e( 'Automatically schedule SmartCrawl to run check for URLs that are missing from your Sitemap.', 'wds' ); ?></small>
87
+ </p>
88
+ <div><span class="sui-tag sui-tag-inactive">
89
  <?php esc_html_e( 'Sitemaps must be activated', 'wds' ); ?>
90
+ </span></div>
91
+ <?php endif; ?>
92
  <?php else : ?>
93
+ <a href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_dash_crawl_pro_tag"
94
+ target="_blank">
95
+ <span class="sui-tag sui-tag-pro sui-tooltip"
96
+ data-tooltip="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>">
97
+ <?php esc_html_e( 'Pro', 'wds' ); ?>
98
+ </span>
99
+ </a>
100
+ <p>
101
+ <small><?php esc_html_e( 'Automatically schedule SmartCrawl to run check for URLs that are missing from your Sitemap.', 'wds' ); ?></small>
102
  </p>
 
 
 
 
 
103
  <?php endif; ?>
104
+ </div>
105
+ <?php endif; ?>
106
+ </div>
107
 
108
+ <div class="sui-box-footer">
109
+ <a href="<?php echo esc_attr( $page_url ); ?>"
110
+ class="sui-button sui-button-ghost">
111
 
112
+ <i class="sui-icon-wrench-tool"
113
+ aria-hidden="true"></i> <?php esc_html_e( 'Configure', 'wds' ); ?>
114
+ </a>
115
  </div>
116
  </section>
includes/admin/templates/dashboard/dashboard-widget-social.php CHANGED
@@ -14,99 +14,100 @@ $pinterest_tag = smartcrawl_get_array_value( $options, 'pinterest-verify' );
14
  $social_page_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL );
15
  $social_option_name = Smartcrawl_Settings::TAB_SOCIAL . '_options';
16
  $settings_option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
17
- $social_enabled = smartcrawl_get_array_value( $options, 'social' );
18
  ?>
19
- <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SOCIAL ); ?>" class="dev-box">
20
- <div class="box-title">
21
- <?php if ( $social_enabled ) : ?>
22
- <div class="buttons buttons-icon">
23
- <a href="<?php echo esc_attr( $social_page_url ); ?>" class="wds-settings-link">
24
- <i class="wds-icon-arrow-right-carats"></i>
25
- </a>
26
- </div>
27
- <?php endif; ?>
28
- <h3>
29
- <i class="wds-icon-social-twitter"></i> <?php esc_html_e( 'Social', 'wds' ); ?>
30
  </h3>
31
  </div>
32
 
33
- <div class="box-content">
34
  <p><?php esc_html_e( 'Control and optimize how your website appears when shared on social platforms like Facebook and Twitter.', 'wds' ); ?></p>
35
 
36
  <?php if ( $social_enabled ) : ?>
37
- <div class="wds-separator-top">
38
- <span class="wds-small-text"><strong><?php esc_html_e( 'OpenGraph', 'wds' ); ?></strong></span>
39
  <?php if ( ! $og_enabled ) : ?>
40
- <p class="wds-small-text">
41
- <?php esc_html_e( 'Add meta data to your pages to make them look great when shared platforms such as Facebook and other popular social networks.', 'wds' ); ?>
42
  </p>
43
  <button
44
- type="button"
45
- data-option-id="<?php echo esc_attr( $social_option_name ); ?>"
46
- data-flag="<?php echo 'og-enable'; ?>"
47
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
48
 
49
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
50
  </button>
51
  <?php else : ?>
52
- <span
53
- class="wds-box-stat-value wds-box-stat-value-success"><?php esc_html_e( 'Active', 'wds' ); ?></span>
 
54
  <?php endif; ?>
55
  </div>
56
 
57
- <div class="wds-separator-top">
58
- <span class="wds-small-text"><strong><?php esc_html_e( 'Twitter Cards', 'wds' ); ?></strong></span>
59
  <?php if ( ! $twitter_card_enabled ) : ?>
60
- <p class="wds-small-text">
61
- <?php esc_attr_e( 'With Twitter Cards, you can attach rich photos, videos and media experiences to Tweets, helping to drive traffic to your website.', 'wds' ); ?>
62
  </p>
63
  <button type="button"
64
  data-option-id="<?php echo esc_attr( $social_option_name ); ?>"
65
  data-flag="<?php echo 'twitter-card-enable'; ?>"
66
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
67
 
68
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
69
  </button>
70
  <?php else : ?>
71
- <span class="wds-box-stat-value wds-box-stat-value-success">
72
- <?php echo esc_html( $twitter_card_status_text ); ?>
73
- </span>
74
  <?php endif; ?>
75
  </div>
76
 
77
- <div class="wds-separator-top">
78
- <span class="wds-small-text">
79
  <strong><?php esc_html_e( 'Pinterest Verification', 'wds' ); ?></strong>
80
- </span>
81
  <?php if ( ! $pinterest_tag || 'fail' === $pinterest_verification_status ) : ?>
82
- <p class="wds-small-text">
83
- <?php esc_html_e( 'Verify your website with Pinterest to attribute your website when your website content is pinned to the platform.', 'wds' ); ?>
84
  </p>
85
- <a href="<?php echo esc_attr( $social_page_url ); ?>#tab_pinterest_verification"
86
- class="button button-small">
 
87
 
88
  <?php esc_html_e( 'Connect', 'wds' ); ?>
89
  </a>
90
  <?php else : ?>
91
- <span
92
- class="wds-box-stat-value wds-box-stat-value-success"><?php esc_html_e( 'Verification tag added' ); ?></span>
 
93
  <?php endif; ?>
94
  </div>
 
 
95
 
96
- <div class="wds-box-footer">
97
- <a href="<?php echo esc_attr( $social_page_url ); ?>"
98
- class="button button-small button-dark button-dark-o wds-dash-configure-button">
99
-
100
- <?php esc_html_e( 'Configure', 'wds' ); ?>
101
- </a>
102
- </div>
103
  <?php else : ?>
104
  <button type="button"
105
  data-option-id="<?php echo esc_attr( $settings_option_name ); ?>"
106
  data-flag="<?php echo esc_attr( 'social' ); ?>"
107
- class="wds-activate-component button button-small wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request">
108
 
109
- <?php esc_html_e( 'Activate', 'wds' ); ?>
 
110
  </button>
111
  <?php endif; ?>
112
  </div>
14
  $social_page_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL );
15
  $social_option_name = Smartcrawl_Settings::TAB_SOCIAL . '_options';
16
  $settings_option_name = Smartcrawl_Settings::TAB_SETTINGS . '_options';
17
+ $social_enabled = Smartcrawl_Settings::get_setting( 'social' );
18
  ?>
19
+ <section id="<?php echo esc_attr( Smartcrawl_Settings_Dashboard::BOX_SOCIAL ); ?>" class="sui-box wds-dashboard-widget">
20
+ <div class="sui-box-header">
21
+ <h3 class="sui-box-title">
22
+ <i class="sui-icon-social-twitter"></i> <?php esc_html_e( 'Social', 'wds' ); ?>
 
 
 
 
 
 
 
23
  </h3>
24
  </div>
25
 
26
+ <div class="sui-box-body">
27
  <p><?php esc_html_e( 'Control and optimize how your website appears when shared on social platforms like Facebook and Twitter.', 'wds' ); ?></p>
28
 
29
  <?php if ( $social_enabled ) : ?>
30
+ <div class="wds-separator-top wds-draw-left-padded">
31
+ <small><strong><?php esc_html_e( 'OpenGraph', 'wds' ); ?></strong></small>
32
  <?php if ( ! $og_enabled ) : ?>
33
+ <p>
34
+ <small><?php esc_html_e( 'Add meta data to your pages to make them look great when shared platforms such as Facebook and other popular social networks.', 'wds' ); ?></small>
35
  </p>
36
  <button
37
+ type="button"
38
+ data-option-id="<?php echo esc_attr( $social_option_name ); ?>"
39
+ data-flag="<?php echo 'og-enable'; ?>"
40
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
41
 
42
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
43
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
44
  </button>
45
  <?php else : ?>
46
+ <div class="wds-right">
47
+ <small><?php esc_html_e( 'Active', 'wds' ); ?></small>
48
+ </div>
49
  <?php endif; ?>
50
  </div>
51
 
52
+ <div class="wds-separator-top wds-draw-left-padded">
53
+ <small><strong><?php esc_html_e( 'Twitter Cards', 'wds' ); ?></strong></small>
54
  <?php if ( ! $twitter_card_enabled ) : ?>
55
+ <p>
56
+ <small><?php esc_attr_e( 'With Twitter Cards, you can attach rich photos, videos and media experiences to Tweets, helping to drive traffic to your website.', 'wds' ); ?></small>
57
  </p>
58
  <button type="button"
59
  data-option-id="<?php echo esc_attr( $social_option_name ); ?>"
60
  data-flag="<?php echo 'twitter-card-enable'; ?>"
61
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
62
 
63
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
64
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
65
  </button>
66
  <?php else : ?>
67
+ <div class="wds-right">
68
+ <small><?php echo esc_html( $twitter_card_status_text ); ?></small>
69
+ </div>
70
  <?php endif; ?>
71
  </div>
72
 
73
+ <div class="wds-separator-top wds-draw-left-padded">
74
+ <small>
75
  <strong><?php esc_html_e( 'Pinterest Verification', 'wds' ); ?></strong>
76
+ </small>
77
  <?php if ( ! $pinterest_tag || 'fail' === $pinterest_verification_status ) : ?>
78
+ <p>
79
+ <small><?php esc_html_e( 'Verify your website with Pinterest to attribute your website when your website content is pinned to the platform.', 'wds' ); ?></small>
80
  </p>
81
+ <a href="<?php echo esc_attr( $social_page_url ); ?>&tab=tab_pinterest_verification"
82
+ class="sui-button sui-button-blue">
83
+ <i class="sui-icon-plus" aria-hidden="true"></i>
84
 
85
  <?php esc_html_e( 'Connect', 'wds' ); ?>
86
  </a>
87
  <?php else : ?>
88
+ <div class="wds-right">
89
+ <small><?php esc_html_e( 'Verification tag added' ); ?></small>
90
+ </div>
91
  <?php endif; ?>
92
  </div>
93
+ <?php endif; ?>
94
+ </div>
95
 
96
+ <div class="sui-box-footer">
97
+ <?php if ( $social_enabled ) : ?>
98
+ <a href="<?php echo esc_attr( $social_page_url ); ?>"
99
+ class="sui-button sui-button-ghost">
100
+ <i class="sui-icon-wrench-tool"
101
+ aria-hidden="true"></i> <?php esc_html_e( 'Configure', 'wds' ); ?>
102
+ </a>
103
  <?php else : ?>
104
  <button type="button"
105
  data-option-id="<?php echo esc_attr( $settings_option_name ); ?>"
106
  data-flag="<?php echo esc_attr( 'social' ); ?>"
107
+ class="wds-activate-component wds-disabled-during-request sui-button sui-button-blue">
108
 
109
+ <span class="sui-loading-text"><?php esc_html_e( 'Activate', 'wds' ); ?></span>
110
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
111
  </button>
112
  <?php endif; ?>
113
  </div>
includes/admin/templates/dashboard/dashboard.php CHANGED
@@ -5,25 +5,20 @@
5
  * @package wpmu-dev-seo
6
  */
7
  ?>
8
- <div id="container" class="wrap wrap-wds wds-page wds-dashboard">
9
- <section id="header">
10
- <div class="actions">
11
- <a target="_blank" class="button button-small button-light actions-button"
12
- href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#chapter-7">
13
- <i class="wds-icon-academy"></i>
14
- <?php esc_html_e( 'View Documentation', 'wds' ); ?>
15
- </a>
16
- </div>
17
 
18
- <h1><?php esc_html_e( 'Dashboard', 'wds' ); ?></h1>
19
- </section>
 
 
 
20
 
21
- <div class="row">
22
- <?php $this->_render( 'dashboard/dashboard-top' ); ?>
23
- </div>
 
24
 
25
- <div class="row">
26
- <div class="col-half col-half-dashboard col-half-dashboard-left">
27
  <?php
28
  if ( smartcrawl_can_show_dash_widget_for( Smartcrawl_Settings_Settings::TAB_CHECKUP ) ) {
29
  $this->_render( 'dashboard/dashboard-widget-seo-checkup' );
@@ -37,7 +32,7 @@
37
  ?>
38
  </div>
39
 
40
- <div class="col-half col-half-dashboard col-half-dashboard-right">
41
  <?php
42
  if ( smartcrawl_can_show_dash_widget_for( Smartcrawl_Settings_Settings::TAB_ONPAGE ) ) {
43
  $this->_render( 'dashboard/dashboard-widget-onpage' );
@@ -57,5 +52,8 @@
57
  </div>
58
 
59
  <?php $this->_render( 'upsell-modal' ); ?>
 
 
 
 
60
  </div>
61
- <?php do_action( 'wds-dshboard-after_settings' ); ?>
5
  * @package wpmu-dev-seo
6
  */
7
  ?>
8
+ <?php $this->_render( 'before-page-container' ); ?>
 
 
 
 
 
 
 
 
9
 
10
+ <div id="container" class="sui-wrap wrap wrap-wds wds-page wds-dashboard">
11
+ <?php $this->_render( 'page-header', array(
12
+ 'title' => esc_html__( 'Dashboard', 'wds' ),
13
+ 'documentation_chapter' => 'dashboard',
14
+ ) ); ?>
15
 
16
+ <div class="sui-row">
17
+ <div class="sui-col-md-12">
18
+ <?php $this->_render( 'dashboard/dashboard-top' ); ?>
19
+ </div>
20
 
21
+ <div class="sui-col">
 
22
  <?php
23
  if ( smartcrawl_can_show_dash_widget_for( Smartcrawl_Settings_Settings::TAB_CHECKUP ) ) {
24
  $this->_render( 'dashboard/dashboard-widget-seo-checkup' );
32
  ?>
33
  </div>
34
 
35
+ <div class="sui-col">
36
  <?php
37
  if ( smartcrawl_can_show_dash_widget_for( Smartcrawl_Settings_Settings::TAB_ONPAGE ) ) {
38
  $this->_render( 'dashboard/dashboard-widget-onpage' );
52
  </div>
53
 
54
  <?php $this->_render( 'upsell-modal' ); ?>
55
+ <?php do_action( 'wds-dshboard-after_settings' ); ?>
56
+
57
+ <?php $this->_render( 'dashboard/dashboard-cross-sell-footer' ); ?>
58
+ <?php $this->_render( 'footer' ); ?>
59
  </div>
 
includes/admin/templates/dashboard/onboard-modal-body.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $checkup_available = is_main_site() && smartcrawl_subsite_setting_page_enabled( 'wds_checkup' );
3
+ $sitemap_available = smartcrawl_subsite_setting_page_enabled( 'wds_sitemap' );
4
+ $social_available = smartcrawl_subsite_setting_page_enabled( 'wds_social' );
5
+ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE );
6
+ ?>
7
+ <?php if ( $checkup_available ): ?>
8
+ <div class="wds-separator-top">
9
+ <?php if ( $service->is_member() ) : ?>
10
+ <?php
11
+ $this->_render( 'toggle-item', array(
12
+ 'field_name' => 'checkup-enable',
13
+ 'item_label' => esc_html__( 'Automatic SEO Checkups & Reporting', 'wds' ),
14
+ 'item_description' => esc_html__( 'Schedule daily, weekly or monthly comprehensive checkups of your homepage SEO and have the results emailed to your inbox', 'wds' ),
15
+ 'attributes' => array(
16
+ 'data-processing' => esc_attr__( 'Activating Automatic SEO Checkups & Reporting', 'wds' ),
17
+ 'checked' => true,
18
+ ),
19
+ ) );
20
+ ?>
21
+ <?php else : ?>
22
+ <?php
23
+ $this->_render( 'toggle-item', array(
24
+ 'field_name' => 'checkup-run',
25
+ 'item_label' => esc_html__( 'Run a full SEO Checkup', 'wds' ),
26
+ 'item_description' => esc_html__( 'Get a comprehensive checkup of your homepage and have the results emailed to your inbox.', 'wds' ),
27
+ 'attributes' => array(
28
+ 'data-processing' => esc_attr__( 'Running a full SEO Checkup', 'wds' ),
29
+ 'checked' => true,
30
+ ),
31
+ ) );
32
+ ?>
33
+ <?php endif; ?>
34
+ </div>
35
+ <?php endif; ?>
36
+
37
+ <div class="wds-separator-top">
38
+ <?php
39
+ $this->_render( 'toggle-item', array(
40
+ 'field_name' => 'analysis-enable',
41
+ 'item_label' => esc_html__( 'SEO & Readability Analysis', 'wds' ),
42
+ 'item_description' => esc_html__( 'Have your pages and posts analyzed for SEO and readability improvements to improve your search ranking', 'wds' ),
43
+ 'attributes' => array(
44
+ 'data-processing' => esc_attr__( 'Activating SEO & Readability Analysis', 'wds' ),
45
+ 'checked' => true,
46
+ ),
47
+ ) );
48
+ ?>
49
+ </div>
50
+
51
+ <?php if ( $sitemap_available ): ?>
52
+ <div class="wds-separator-top">
53
+ <?php
54
+ $this->_render( 'toggle-item', array(
55
+ 'field_name' => 'sitemaps-enable',
56
+ 'item_label' => esc_html__( 'Sitemaps', 'wds' ),
57
+ 'item_description' => esc_html__( 'Sitemaps expose your site content to search engines and allow them to discover it more easily.', 'wds' ),
58
+ 'attributes' => array(
59
+ 'data-processing' => esc_attr__( 'Activating Sitemaps', 'wds' ),
60
+ 'checked' => true,
61
+ ),
62
+ ) );
63
+ ?>
64
+ </div>
65
+ <?php endif; ?>
66
+
67
+ <?php if ( $social_available ): ?>
68
+ <div class="wds-separator-top">
69
+ <?php
70
+ $this->_render( 'toggle-item', array(
71
+ 'field_name' => 'opengraph-enable',
72
+ 'item_label' => esc_html__( 'OpenGraph', 'wds' ),
73
+ 'item_description' => esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook', 'wds' ),
74
+ 'attributes' => array(
75
+ 'data-processing' => esc_attr__( 'Activating OpenGraph', 'wds' ),
76
+ 'checked' => true,
77
+ ),
78
+ ) );
79
+ ?>
80
+ </div>
81
+
82
+ <div class="wds-separator-top">
83
+ <?php
84
+ $this->_render( 'toggle-item', array(
85
+ 'field_name' => 'twitter-enable',
86
+ 'item_label' => esc_html__( 'Twitter Cards', 'wds' ),
87
+ 'item_description' => esc_html__( 'With Twitter Cards, you can attach rich photos, videos and media experiences to Tweets, helping drive traffic to your site.', 'wds' ),
88
+ 'attributes' => array(
89
+ 'data-processing' => esc_attr__( 'Activating Twitter Cards', 'wds' ),
90
+ 'checked' => true,
91
+ ),
92
+ ) );
93
+ ?>
94
+ </div>
95
+ <?php endif; ?>
includes/admin/templates/dashboard/onboard-modal-footer.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <div>
2
+ <p><small><?php esc_html_e( 'These services will be configured with recommended settings. You can change these at any time.', 'wds' ); ?></small></p>
3
+ </div>
4
+
5
+ <button type="button" class="sui-button sui-button-blue wds-onboarding-setup">
6
+ <?php esc_html_e( 'Get started', 'wds' ); ?>
7
+ </button>
includes/admin/templates/dashboard/onboard-modal-header-button.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <button data-a11y-dialog-hide class="sui-dialog-close"
2
+ type="button"
3
+ aria-label="<?php esc_html_e( 'Close this dialog window', 'wds' ); ?>"></button>
4
+
5
+ <button class="sui-button sui-button-ghost onboard-skip"
6
+ type="button"
7
+ aria-label="<?php esc_html_e( 'Close this dialog window and skip onboarding', 'wds' ); ?>">
8
+ <?php esc_html_e( 'Skip', 'wds' ); ?>
9
+ </button>
includes/admin/templates/dashboard/onboard-progress.php CHANGED
@@ -4,4 +4,3 @@ $this->_render( 'progress-bar', array(
4
  'progress' => 0,
5
  ) );
6
  ?>
7
- <div class="processing-item-desc"></div>
4
  'progress' => 0,
5
  ) );
6
  ?>
 
includes/admin/templates/dashboard/onboarding.php CHANGED
@@ -1,113 +1,9 @@
1
- <dialog class="auto-show wds-modal wds-onboard-dialog" id="wds-onboarding"
2
- data-title="<?php esc_attr_e( 'Quick setup', 'wds' ); ?>">
3
- <div class="intro">
4
- <p>
5
- <?php esc_html_e( "Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly set up the basics for you, then you can fine tune each setting as you go - our recommendations are on by default.", 'wds' ); ?>
6
- </p>
7
- </div>
8
-
9
- <?php $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE ); ?>
10
-
11
- <div class="wds-separator-top wds-onboarding-item">
12
- <?php if ( $service->is_member() ) : ?>
13
- <?php
14
- $this->_render( 'toggle-item', array(
15
- 'field_name' => 'checkup-enable',
16
- 'item_label' => esc_html__( 'Automatic SEO Checkups & Reporting', 'wds' ),
17
- 'item_description' => esc_html__( 'Schedule daily, weekly or monthly comprehensive checkups of your homepage SEO and have the results emailed to your inbox', 'wds' ),
18
- 'attributes' => array(
19
- 'data-processing' => esc_attr__( 'Activating Automatic SEO Checkups & Reporting', 'wds' ),
20
- 'checked' => true,
21
- ),
22
- ) );
23
- ?>
24
- <?php else : ?>
25
- <?php
26
- $this->_render( 'toggle-item', array(
27
- 'field_name' => 'checkup-run',
28
- 'item_label' => esc_html__( 'Run a full SEO Checkup', 'wds' ),
29
- 'item_description' => esc_html__( 'Get a comprehensive checkup of your homepage and have the results emailed to your inbox.', 'wds' ),
30
- 'attributes' => array(
31
- 'data-processing' => esc_attr__( 'Running a full SEO Checkup', 'wds' ),
32
- 'checked' => true,
33
- ),
34
- ) );
35
- ?>
36
- <?php endif; ?>
37
- </div>
38
-
39
- <div class="wds-separator-top wds-onboarding-item">
40
- <?php
41
- $this->_render( 'toggle-item', array(
42
- 'field_name' => 'analysis-enable',
43
- 'item_label' => esc_html__( 'SEO & Readability Analysis', 'wds' ),
44
- 'item_description' => esc_html__( 'Have your pages and posts analyzed for SEO and readability improvements to improve your search ranking', 'wds' ),
45
- 'attributes' => array(
46
- 'data-processing' => esc_attr__( 'Activating SEO & Readability Analysis', 'wds' ),
47
- 'checked' => true,
48
- ),
49
- ) );
50
- ?>
51
- </div>
52
-
53
- <div class="wds-separator-top wds-onboarding-item">
54
- <?php
55
- $this->_render( 'toggle-item', array(
56
- 'field_name' => 'opengraph-enable',
57
- 'item_label' => esc_html__( 'OpenGraph', 'wds' ),
58
- 'item_description' => esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook', 'wds' ),
59
- 'attributes' => array(
60
- 'data-processing' => esc_attr__( 'Activating OpenGraph', 'wds' ),
61
- 'checked' => true,
62
- ),
63
- ) );
64
- ?>
65
- </div>
66
-
67
- <div class="wds-separator-top wds-onboarding-item">
68
- <?php
69
- $this->_render( 'toggle-item', array(
70
- 'field_name' => 'sitemaps-enable',
71
- 'item_label' => esc_html__( 'Sitemaps', 'wds' ),
72
- 'item_description' => esc_html__( 'Sitemaps expose your site content to search engines and allow them to discover it more easily.', 'wds' ),
73
- 'attributes' => array(
74
- 'data-processing' => esc_attr__( 'Activating Sitemaps', 'wds' ),
75
- 'checked' => true,
76
- ),
77
- ) );
78
- ?>
79
- </div>
80
-
81
- <div class="wds-separator-top wds-onboarding-item">
82
- <?php
83
- $this->_render( 'toggle-item', array(
84
- 'field_name' => 'twitter-enable',
85
- 'item_label' => esc_html__( 'Twitter Cards', 'wds' ),
86
- 'item_description' => esc_html__( 'With Twitter Cards, you can attach rich photos, videos and media experiences to Tweets, helping drive traffic to your site.', 'wds' ),
87
- 'attributes' => array(
88
- 'data-processing' => esc_attr__( 'Activating Twitter Cards', 'wds' ),
89
- 'checked' => true,
90
- ),
91
- ) );
92
- ?>
93
- </div>
94
-
95
- <div class="wds-separator-top">
96
- <div class="wds-notice wds-notice-info">
97
- <p class="wds-small-text">
98
- <?php esc_html_e( 'These services will be configured with recommended settings.', 'wds' ); ?>
99
- <?php esc_html_e( 'You can change these at any time.', 'wds' ); ?>
100
- </p>
101
- </div>
102
- </div>
103
-
104
- <div class="action wds-box-footer">
105
- <button class="button button-dark button-dark-o onboard-skip" type="button">
106
- <?php esc_html_e( 'Skip', 'wds' ); ?>
107
- </button>
108
-
109
- <button type="button" class="button wds-onboarding-setup">
110
- <?php esc_html_e( 'Get started', 'wds' ); ?>
111
- </button>
112
- </div>
113
- </dialog>
1
+ <?php
2
+ $this->_render( 'modal', array(
3
+ 'id' => 'wds-onboarding',
4
+ 'title' => esc_html__( 'Quick setup', 'wds' ),
5
+ 'description' => esc_html__( "Welcome to SmartCrawl, the hottest SEO plugin for WordPress! Let's quickly set up the basics for you, then you can fine tune each setting as you go - our recommendations are on by default.", 'wds' ),
6
+ 'header_actions_template' => 'dashboard/onboard-modal-header-button',
7
+ 'body_template' => 'dashboard/onboard-modal-body',
8
+ 'footer_template' => 'dashboard/onboard-modal-footer',
9
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/disabled-component-inner.php CHANGED
@@ -4,15 +4,26 @@ $image = empty( $image ) ? '' : $image;
4
  $component = empty( $component ) ? '' : $component;
5
  $button_text = empty( $button_text ) ? '' : $button_text;
6
  $is_member = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member();
 
7
  $premium_feature = empty( $premium_feature ) ? false : $premium_feature;
8
  $notice = empty( $notice ) ? '' : $notice;
9
  $button_url = empty( $button_url ) ? '' : $button_url;
 
 
 
 
 
 
 
10
  ?>
11
  <div class="wds-disabled-component">
12
- <p>
13
- <img src="<?php echo esc_attr( SMARTCRAWL_PLUGIN_URL ); ?>/images/<?php echo esc_attr( $image ); ?>"
14
- alt="<?php esc_attr_e( 'Disabled', 'wds' ); ?>" class="wds-disabled-image"/>
15
- </p>
 
 
 
16
  <p><?php echo wp_kses_post( $content ); ?></p>
17
 
18
  <?php if ( $notice ) : ?>
@@ -27,12 +38,24 @@ $button_url = empty( $button_url ) ? '' : $button_url;
27
  <?php endif; ?>
28
 
29
  <?php if ( $premium_feature && ! $is_member ) : ?>
30
- <button class="wds-upgrade-button button-green"><?php esc_html_e( 'Upgrade to Pro', 'wds' ); ?></button>
 
 
 
 
31
  <?php else : ?>
32
  <?php if ( $button_url ) : ?>
33
- <a class="button" href="<?php echo esc_attr( $button_url ); ?>"><?php echo esc_html( $button_text ); ?></a>
 
 
 
 
 
 
34
  <?php else : ?>
35
- <input name="submit" class="button" value="<?php echo esc_attr( $button_text ); ?>" type="submit"/>
 
 
36
  <?php endif; ?>
37
  <?php endif; ?>
38
  </div>
4
  $component = empty( $component ) ? '' : $component;
5
  $button_text = empty( $button_text ) ? '' : $button_text;
6
  $is_member = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member();
7
+ $upgrade_tag = empty( $upgrade_tag ) ? '' : $upgrade_tag;
8
  $premium_feature = empty( $premium_feature ) ? false : $premium_feature;
9
  $notice = empty( $notice ) ? '' : $notice;
10
  $button_url = empty( $button_url ) ? '' : $button_url;
11
+ $button_icon = empty( $button_icon ) ? '' : $button_icon;
12
+ $button_disabled = empty( $button_disabled ) ? false : $button_disabled;
13
+
14
+ $image_url = sprintf( '%s/assets/images/%s', SMARTCRAWL_PLUGIN_URL, $image );
15
+ $image_url = Smartcrawl_White_Label::get()->get_wpmudev_hero_image( $image_url );
16
+
17
+ $upgrade_url = 'https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=' . $upgrade_tag;
18
  ?>
19
  <div class="wds-disabled-component">
20
+ <?php if ( $image_url ): ?>
21
+ <p>
22
+ <img src="<?php echo esc_attr( $image_url ); ?>"
23
+ alt="<?php esc_attr_e( 'Disabled', 'wds' ); ?>" class="wds-disabled-image"/>
24
+ </p>
25
+ <?php endif; ?>
26
+
27
  <p><?php echo wp_kses_post( $content ); ?></p>
28
 
29
  <?php if ( $notice ) : ?>
38
  <?php endif; ?>
39
 
40
  <?php if ( $premium_feature && ! $is_member ) : ?>
41
+ <a class="sui-button sui-button-purple"
42
+ target="_blank"
43
+ href="<?php echo esc_attr( $upgrade_url ); ?>">
44
+ <?php esc_html_e( 'Upgrade to Pro', 'wds' ); ?>
45
+ </a>
46
  <?php else : ?>
47
  <?php if ( $button_url ) : ?>
48
+ <a class="sui-button sui-button-blue <?php echo $button_disabled ? 'disabled' : ''; ?>"
49
+ href="<?php echo esc_attr( $button_url ); ?>">
50
+ <?php if ( $button_icon ): ?>
51
+ <i class="<?php echo esc_attr( $button_icon ); ?>" aria-hidden="true"></i>
52
+ <?php endif; ?>
53
+ <?php echo esc_html( $button_text ); ?>
54
+ </a>
55
  <?php else : ?>
56
+ <input name="submit" class="sui-button sui-button-blue"
57
+ value="<?php echo esc_attr( $button_text ); ?>"
58
+ type="submit"/>
59
  <?php endif; ?>
60
  <?php endif; ?>
61
  </div>
includes/admin/templates/disabled-component.php CHANGED
@@ -5,11 +5,11 @@ $component = empty( $component ) ? '' : $component;
5
  $button_text = empty( $button_text ) ? '' : $button_text;
6
  ?>
7
  <form method='post'>
8
- <section class="dev-box">
9
- <div class="box-title">
10
- <h3><?php esc_html_e( 'Get Started', 'wds' ); ?></h3>
11
  </div>
12
- <div class="box-content">
13
  <?php
14
  $this->_render( 'disabled-component-inner', array(
15
  'content' => $content,
@@ -19,5 +19,5 @@ $button_text = empty( $button_text ) ? '' : $button_text;
19
  ) );
20
  ?>
21
  </div>
22
- </section>
23
  </form>
5
  $button_text = empty( $button_text ) ? '' : $button_text;
6
  ?>
7
  <form method='post'>
8
+ <div class="sui-box">
9
+ <div class="sui-box-header">
10
+ <h2 class="sui-box-title"><?php esc_html_e( 'Get Started', 'wds' ); ?></h2>
11
  </div>
12
+ <div class="sui-box-body">
13
  <?php
14
  $this->_render( 'disabled-component-inner', array(
15
  'content' => $content,
19
  ) );
20
  ?>
21
  </div>
22
+ </div>
23
  </form>
includes/admin/templates/dismissable-notice.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  $message = empty( $message ) ? '' : $message;
3
- $class = empty( $class ) ? 'wds-notice-warning' : $class;
4
  $key = empty( $key ) ? '' : $key;
5
 
6
  if ( ! $message ) {
@@ -11,11 +11,15 @@ $dismissed_messages = get_user_meta( get_current_user_id(), 'wds_dismissed_messa
11
  $is_message_dismissed = smartcrawl_get_array_value( $dismissed_messages, $key ) === true;
12
  ?>
13
  <?php if ( ! $is_message_dismissed ) : ?>
14
- <div class="wds-notice <?php echo esc_attr( $class ); ?> <?php echo esc_attr( $key ); ?>"
15
  data-key="<?php echo esc_attr( $key ); ?>">
16
  <p>
17
  <?php echo wp_kses_post( $message ); ?>
18
- <a href="#" class="wds-notice-dismiss"><?php esc_html_e( 'Dismiss', 'wds' ); ?></a>
 
 
 
 
19
  </p>
20
  </div>
21
  <?php endif; ?>
1
  <?php
2
  $message = empty( $message ) ? '' : $message;
3
+ $class = empty( $class ) ? 'sui-notice-warning' : $class;
4
  $key = empty( $key ) ? '' : $key;
5
 
6
  if ( ! $message ) {
11
  $is_message_dismissed = smartcrawl_get_array_value( $dismissed_messages, $key ) === true;
12
  ?>
13
  <?php if ( ! $is_message_dismissed ) : ?>
14
+ <div class="wds-notice sui-notice <?php echo esc_attr( $class ); ?> <?php echo esc_attr( $key ); ?>"
15
  data-key="<?php echo esc_attr( $key ); ?>">
16
  <p>
17
  <?php echo wp_kses_post( $message ); ?>
18
+ <span class="wds-notice-wrap">
19
+ <a href="#" class="wds-notice-dismiss">
20
+ <?php esc_html_e( 'Dismiss', 'wds' ); ?>
21
+ </a>
22
+ </span>
23
  </p>
24
  </div>
25
  <?php endif; ?>
includes/admin/templates/email-recipient.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $index = empty( $index ) ? 0 : $index;
3
+ $email_recipient = empty( $email_recipient ) ? array() : $email_recipient;
4
+ $field_name = empty( $field_name ) ? '' : $field_name;
5
+
6
+ if ( ! is_array( $email_recipient ) || empty( $email_recipient ) ) {
7
+ return;
8
+ }
9
+
10
+ $name = smartcrawl_get_array_value( $email_recipient, 'name' );
11
+ $email = smartcrawl_get_array_value( $email_recipient, 'email' );
12
+ ?>
13
+ <div class="wds-recipient sui-recipient">
14
+ <span class="sui-recipient-name">
15
+ <?php echo get_avatar( $email, 20 ); ?>
16
+ <?php echo esc_html( $name ); ?>
17
+ </span>
18
+ <span class="sui-recipient-email"><?php echo esc_html( $email ); ?></span>
19
+ <span>
20
+ <?php if ( $field_name ): ?>
21
+ <a type="button" class="sui-button-icon wds-remove-email-recipient">
22
+ <i class="sui-icon-trash" aria-hidden="true"></i>
23
+ </a>
24
+ <?php endif; ?>
25
+ </span>
26
+
27
+ <?php if ( $field_name ): ?>
28
+ <input type="hidden"
29
+ name="<?php echo esc_attr( $field_name ); ?>[<?php echo esc_attr( $index ); ?>][name]"
30
+ value="<?php echo esc_attr( $name ); ?>"/>
31
+ <input type="hidden"
32
+ name="<?php echo esc_attr( $field_name ); ?>[<?php echo esc_attr( $index ); ?>][email]"
33
+ value="<?php echo esc_attr( $email ); ?>"/>
34
+ <?php endif; ?>
35
+ </div>
includes/admin/templates/email-recipients.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = empty( $id ) ? '' : $id;
3
+ $modal_id = $id . '-modal';
4
+ $email_recipients = empty( $email_recipients ) || ! is_array( $email_recipients )
5
+ ? array()
6
+ : $email_recipients;
7
+ $field_name = empty( $field_name ) ? '' : $field_name;
8
+ $disable_addition = empty( $disable_addition ) ? false : true;
9
+ ?>
10
+
11
+ <div class="wds-recipients sui-recipients"
12
+ data-field-name="<?php echo esc_attr( $field_name ); ?>">
13
+
14
+ <?php foreach ( $email_recipients as $index => $email_recipient ) {
15
+ $this->_render( 'email-recipient', array(
16
+ 'index' => $index,
17
+ 'email_recipient' => $email_recipient,
18
+ 'field_name' => $field_name,
19
+ ) );
20
+ } ?>
21
+
22
+ <?php if ( ! $disable_addition ): ?>
23
+ <a data-a11y-dialog-show="<?php echo esc_attr( $modal_id ); ?>"
24
+ class="sui-button sui-button-ghost">
25
+
26
+ <i class="sui-icon-plus"
27
+ aria-hidden="true"></i> <?php esc_html_e( 'Add Recipient', 'wds' ); ?>
28
+ </a>
29
+
30
+ <?php $this->_render( 'modal', array(
31
+ 'id' => $modal_id,
32
+ 'title' => esc_html__( 'Add Recipient', 'wds' ),
33
+ 'description' => esc_html__( 'Add as many recipients as you like, they will receive email reports as per the schedule you set.', 'wds' ),
34
+ 'body_template' => 'add-email-recipient-modal-body',
35
+ 'footer_template' => 'add-email-recipient-modal-footer',
36
+ 'small' => true,
37
+ ) ); ?>
38
+ <?php endif; ?>
39
+ </div>
includes/admin/templates/floating-message.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $class = empty( $class ) ? 'sui-notice-info' : $class;
3
+ $message = empty( $message ) ? '' : $message;
4
+ ?>
5
+ <div class="sui-wrap wds-notice-floating">
6
+ <div class="sui-notice-top sui-can-dismiss <?php echo esc_attr( $class ); ?>">
7
+ <div class="sui-notice-content">
8
+ <p><?php echo esc_html( $message ); ?></p>
9
+ </div>
10
+ <span class="sui-notice-dismiss">
11
+ <a role="button" href="#" aria-label="<?php esc_html_e( 'Dismiss', 'wds' ); ?>"
12
+ class="sui-icon-check"></a>
13
+ </span>
14
+ </div>
15
+ </div>
includes/admin/templates/footer.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = (boolean) smartcrawl_get_array_value( $_view, 'is_member' );
3
+ $footer_text = sprintf( esc_html__( 'Made with %s by WPMU DEV', 'wds' ), '<i class="sui-icon-heart"></i>' );
4
+ $footer_text = Smartcrawl_White_Label::get()->get_wpmudev_footer_text( $footer_text );
5
+ ?>
6
+
7
+ <div class="sui-footer">
8
+ <?php echo wp_kses_post( $footer_text ); ?>
9
+ </div>
10
+
11
+ <?php if ( $is_member ): ?>
12
+ <!-- PRO Navigation -->
13
+ <ul class="sui-footer-nav">
14
+ <li><a href="https://premium.wpmudev.org/hub/" target="_blank"><?php esc_html_e( 'The Hub', 'wds' ); ?></a></li>
15
+ <li><a href="https://premium.wpmudev.org/projects/category/plugins/"
16
+ target="_blank"><?php esc_html_e( 'Plugins', 'wds' ); ?></a></li>
17
+ <li><a href="https://premium.wpmudev.org/roadmap/" target="_blank"><?php esc_html_e( 'Roadmap', 'wds' ); ?></a>
18
+ </li>
19
+ <li><a href="https://premium.wpmudev.org/hub/support/"
20
+ target="_blank"><?php esc_html_e( 'Support', 'wds' ); ?></a>
21
+ </li>
22
+ <li><a href="https://premium.wpmudev.org/docs/" target="_blank"><?php esc_html_e( 'Docs', 'wds' ); ?></a></li>
23
+ <li><a href="https://premium.wpmudev.org/hub/community/"
24
+ target="_blank"><?php esc_html_e( 'Community', 'wds' ); ?></a></li>
25
+ <li><a href="https://premium.wpmudev.org/terms-of-service/"
26
+ target="_blank"><?php esc_html_e( 'Terms of Service', 'wds' ); ?></a></li>
27
+ <li><a href="https://incsub.com/privacy-policy/"
28
+ target="_blank"><?php esc_html_e( 'Privacy Policy', 'wds' ); ?></a>
29
+ </li>
30
+ </ul>
31
+ <?php else: ?>
32
+ <ul class="sui-footer-nav">
33
+ <li><a href="https://profiles.wordpress.org/wpmudev#content-plugins"
34
+ target="_blank"><?php esc_html_e( 'Free Plugins', 'wds' ); ?></a></li>
35
+ <li><a href="https://premium.wpmudev.org/features/"
36
+ target="_blank"><?php esc_html_e( 'Membership', 'wds' ); ?></a>
37
+ </li>
38
+ <li><a href="https://premium.wpmudev.org/roadmap/" target="_blank"><?php esc_html_e( 'Roadmap', 'wds' ); ?></a>
39
+ </li>
40
+ <li><a href="https://wordpress.org/support/plugin/smartcrawl-seo"
41
+ target="_blank"><?php esc_html_e( 'Support', 'wds' ); ?></a></li>
42
+ <li><a href="https://premium.wpmudev.org/docs/" target="_blank"><?php esc_html_e( 'Docs', 'wds' ); ?></a></li>
43
+ <li><a href="https://premium.wpmudev.org/hub/" target="_blank"><?php esc_html_e( 'The Hub', 'wds' ); ?></a></li>
44
+ <li><a href="https://premium.wpmudev.org/terms-of-service/"
45
+ target="_blank"><?php esc_html_e( 'Terms of Service', 'wds' ); ?></a></li>
46
+ <li><a href="https://incsub.com/privacy-policy/"
47
+ target="_blank"><?php esc_html_e( 'Privacy Policy', 'wds' ); ?></a>
48
+ </li>
49
+ </ul>
50
+ <?php endif; ?>
51
+
52
+ <ul class="sui-footer-social">
53
+ <li><a href="https://www.facebook.com/wpmudev" target="_blank">
54
+ <i class="sui-icon-social-facebook" aria-hidden="true"></i>
55
+ <span class="sui-screen-reader-text"><?php esc_html_e( 'Facebook', 'wds' ); ?></span>
56
+ </a></li>
57
+ <li><a href="https://twitter.com/wpmudev" target="_blank">
58
+ <i class="sui-icon-social-twitter" aria-hidden="true"></i></a>
59
+ <span class="sui-screen-reader-text"><?php esc_html_e( 'Twitter', 'wds' ); ?></span>
60
+ </li>
61
+ <li><a href="https://www.instagram.com/wpmu_dev/" target="_blank">
62
+ <i class="sui-icon-instagram" aria-hidden="true"></i>
63
+ <span class="sui-screen-reader-text"><?php esc_html_e( 'Instagram', 'wds' ); ?></span>
64
+ </a></li>
65
+ </ul>
includes/admin/templates/links-dropdown.php CHANGED
@@ -4,13 +4,15 @@ $label = empty( $label ) ? '' : $label;
4
  $links = empty( $links ) ? array() : $links;
5
  ?>
6
 
7
- <div class="wds-links-dropdown">
8
- <a class="wds-links-dropdown-anchor" href="#">&hellip;</a>
9
- <ul>
10
- <?php if ( $label ) : ?>
11
- <li class="wds-links-dropdown-label"><?php echo $label; ?></li>
12
- <?php endif; ?>
13
 
 
 
 
14
  <?php foreach ( $links as $href => $text ) : ?>
15
  <li><a href="<?php echo esc_attr( $href ); ?>"><?php echo $text; ?></a></li>
16
  <?php endforeach; ?>
4
  $links = empty( $links ) ? array() : $links;
5
  ?>
6
 
7
+ <div class="sui-dropdown wds-links-dropdown">
8
+ <button class="sui-button-icon sui-dropdown-anchor" aria-label="Dropdown">
9
+ <span class="sui-loading-text">
10
+ <i class="sui-icon-widget-settings-config" aria-hidden="true"></i>
11
+ </span>
 
12
 
13
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
14
+ </button>
15
+ <ul>
16
  <?php foreach ( $links as $href => $text ) : ?>
17
  <li><a href="<?php echo esc_attr( $href ); ?>"><?php echo $text; ?></a></li>
18
  <?php endforeach; ?>
includes/admin/templates/macros-dropdown.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $macros = Smartcrawl_Onpage_Settings::get_macros();
3
+ ?>
4
+
5
+ <select>
6
+ <?php foreach ( $macros as $macro => $label ): ?>
7
+
8
+ <option value="<?php echo esc_attr( $macro ); ?>"
9
+ data-content="<?php echo esc_attr( $macro ); ?>">
10
+ <?php echo esc_html( $label ); ?>
11
+ </option>
12
+ <?php endforeach; ?>
13
+ </select>
includes/admin/templates/mascot-message.php CHANGED
@@ -2,6 +2,7 @@
2
  $key = empty( $key ) ? '' : $key;
3
  $message = empty( $message ) ? '' : $message;
4
  $dismissible = isset( $dismissible ) ? $dismissible : true;
 
5
 
6
  if ( ! $message ) {
7
  return;
@@ -11,15 +12,18 @@ $dismissed_messages = get_user_meta( get_current_user_id(), 'wds_dismissed_messa
11
  $is_message_dismissed = smartcrawl_get_array_value( $dismissed_messages, $key ) === true;
12
  ?>
13
  <?php if ( ! $is_message_dismissed ) : ?>
14
- <div class="wds-mascot-message <?php echo esc_attr( $key ); ?>" data-key="<?php echo esc_attr( $key ); ?>">
15
- <div class="wds-mascot"></div>
16
- <div class="wds-mascot-bubble-container">
17
- <div class="wds-mascot-bubble">
 
18
  <?php if ( $dismissible ) : ?>
19
- <span class="wds-mascot-bubble-dismiss"><i class="wds-icon-close"></i></span>
 
 
20
  <?php endif; ?>
21
- <p class="wds-small-text"><?php echo wp_kses_post( $message ); ?></p>
22
- </div>
23
  </div>
24
  </div>
25
  <?php endif; ?>
2
  $key = empty( $key ) ? '' : $key;
3
  $message = empty( $message ) ? '' : $message;
4
  $dismissible = isset( $dismissible ) ? $dismissible : true;
5
+ $image_name = empty( $image_name ) ? 'mascot-message' : $image_name;
6
 
7
  if ( ! $message ) {
8
  return;
12
  $is_message_dismissed = smartcrawl_get_array_value( $dismissed_messages, $key ) === true;
13
  ?>
14
  <?php if ( ! $is_message_dismissed ) : ?>
15
+ <div class="wds-mascot-message sui-box-settings-row sui-upsell-row" data-key="<?php echo esc_attr( $key ); ?>">
16
+ <img class="sui-image sui-upsell-image"
17
+ src="<?php echo esc_attr( SMARTCRAWL_PLUGIN_URL ); ?>/assets/images/<?php echo esc_attr( $image_name ); ?>.svg"/>
18
+ <div class="sui-upsell-notice">
19
+ <p>
20
  <?php if ( $dismissible ) : ?>
21
+ <span class="wds-mascot-bubble-dismiss">
22
+ <i class="sui-icon-check" aria-hidden="true"></i>
23
+ </span>
24
  <?php endif; ?>
25
+ <?php echo wp_kses_post( $message ); ?>
26
+ </p>
27
  </div>
28
  </div>
29
  <?php endif; ?>
includes/admin/templates/media-url-field.php CHANGED
@@ -5,10 +5,12 @@ $item = empty( $item ) ? '' : $item;
5
  $value = isset( $options[ $item ] ) ? $options[ $item ] : '';
6
  ?>
7
  <div class="wds-media-url" data-name="<?php echo esc_attr( $item ); ?>">
8
- <input class="wds-media-url-field" id="<?php echo esc_attr( $item ); ?>" type="text"
9
  name="<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $item ); ?>]"
10
  value="<?php echo esc_attr( $value ); ?>"/>
11
- <button type="button" class="wds-media-url-button button button-dark-o">
12
- <?php esc_html_e( 'Select', 'wds' ); ?>
13
- </button>
 
 
14
  </div>
5
  $value = isset( $options[ $item ] ) ? $options[ $item ] : '';
6
  ?>
7
  <div class="wds-media-url" data-name="<?php echo esc_attr( $item ); ?>">
8
+ <input class="wds-media-url-field sui-form-control" id="<?php echo esc_attr( $item ); ?>" type="text"
9
  name="<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $item ); ?>]"
10
  value="<?php echo esc_attr( $value ); ?>"/>
11
+ <p>
12
+ <button type="button" class="wds-media-url-button sui-button sui-button-ghost">
13
+ <?php esc_html_e( 'Select', 'wds' ); ?>
14
+ </button>
15
+ </p>
16
  </div>
includes/admin/templates/metabox/analysis-readability.php CHANGED
@@ -1,8 +1,4 @@
1
  <?php
2
- if ( ! Smartcrawl_Settings::get_setting( 'analysis-seo' ) ) {
3
- return false;
4
- }
5
-
6
  /**
7
  * @var $model \Smartcrawl_Model_Analysis
8
  */
@@ -21,112 +17,96 @@ $readability_levels_map = $model->get_readability_levels_map();
21
  $readability_strategy = Smartcrawl_String::get_readability_strategy();
22
 
23
  if ( $readability_ignored ) {
24
- $classes_array[] = 'disabled';
25
  }
26
 
27
  $total_possible_score = Smartcrawl_String::READABILITY_KINCAID === $readability_strategy ? '100' : '';
28
  $readability_level_description = $model->get_readability_level_description( $readability_level );
29
  $readability_state = $model->get_kincaid_readability_state( $readability_score, $readability_ignored );
30
- $classes_array[] = sprintf(
31
- 'wds-check-%s',
32
  $readability_state
33
  );
34
- $score_class = sprintf(
35
- 'wds-score-%s',
 
36
  $readability_state
37
  );
38
- $classes = implode( ' ', $classes_array );
39
  $refresh_analysis_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
 
 
 
 
 
 
 
 
40
  ?>
41
 
42
  <div class="wds-readability-report wds-report"
43
  data-readability-state="<?php echo esc_attr( $readability_state ); ?>">
44
 
45
- <div class="wds-readability-stats wds-report-stats">
46
- <div class="wds-report-score">
47
- <div class="wds-score <?php echo esc_attr( $score_class ); ?>">
48
- <span><?php echo esc_html( $readability_score ); ?></span><?php if ( $total_possible_score ) : ?><span
49
- class="wds-total">/<?php echo esc_html( $total_possible_score ); ?></span><?php endif; ?>
 
 
 
 
 
 
50
  </div>
51
- <span class="wds-small-text"><?php esc_html_e( 'Readability score', 'wds' ); ?></span>
52
  </div>
53
 
54
- <div class="wds-readability-level-description wds-small-text">
55
- <?php echo wp_kses( $readability_level_description, array( 'strong' => array() ) ); ?>
 
 
 
 
 
 
 
 
56
 
57
- <br/>
58
- <button class="button button-small button-dark button-dark-o wds-refresh-analysis wds-analysis-readability wds-disabled-during-request"
59
- <?php echo esc_attr( $refresh_analysis_disabled ); ?> type="button">
60
- <span><?php esc_html_e( 'Refresh', 'wds' ); ?></span>
61
  </button>
62
  </div>
63
  </div>
64
 
65
- <div class="wds-analysis-working">
66
- <p>
67
- <?php esc_html_e( 'Analyzing content, please wait a few moments', 'wds' ); ?>
68
- </p>
69
- </div>
 
 
 
 
 
 
70
 
71
- <div class="wds-report-inner">
72
- <div class="wds-accordion">
73
- <div class="wds-check-item wds-accordion-section <?php echo esc_attr( $classes ); ?>">
74
- <div class="wds-accordion-handle">
75
- <div class="wds-accordion-handle-part">
76
- <?php esc_html_e( 'Flesch-Kincaid Test', 'wds' ); ?>
77
- </div>
78
-
79
- <?php if ( $readability_ignored ) : ?>
80
- <div class="wds-unignore-container wds-accordion-handle-part">
81
- <button type="button"
82
- class="wds-unignore wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button button-small button-dark-o"
83
- data-check_id="readability">
84
- <?php esc_html_e( 'Restore', 'wds' ); ?>
85
- </button>
86
- </div>
87
- <?php else : ?>
88
- <div class="wds-readability-level wds-accordion-handle-part">
89
- <span class="wds-check-item-indicator"><?php echo esc_html( $readability_level ); ?></span>
90
- </div>
91
- <?php endif; ?>
92
- </div>
93
- <div class="wds-accordion-content">
94
- <div class="wds-small-text"><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></div>
95
- <p class="wds-small-text"><?php esc_html_e( 'The Flesch-Kincaid readability tests are readability tests designed to indicate how difficult a passage in English is to understand. Here are the benchmarks.', 'wds' ); ?></p>
96
- <table class="wds-list-table">
97
- <tbody>
98
- <tr>
99
- <th><?php esc_html_e( 'Score', 'wds' ); ?></th>
100
- <th><?php esc_html_e( 'Description', 'wds' ); ?></th>
101
- </tr>
102
-
103
- <?php foreach ( $readability_levels_map as $label => $level ) : ?>
104
- <tr>
105
- <?php
106
- if ( ! is_array( $level ) || ! isset( $level['max'] ) || ! isset( $level['min'] ) ) {
107
- continue;
108
- }
109
- ?>
110
- <td><?php echo esc_html( (int) ceil( $level['min'] ) ); ?>
111
- - <?php echo esc_html( (int) ceil( $level['max'] ) ); ?></td>
112
- <td><?php echo esc_html( $label ); ?></td>
113
- </tr>
114
- <?php endforeach; ?>
115
- </tbody>
116
- </table>
117
-
118
- <div class="wds-small-text"><strong><?php esc_html_e( 'How to fix', 'wds' ); ?></strong></div>
119
- <p class="wds-small-text"><?php esc_html_e( 'Try to use shorter sentences, with less difficult words to improve readability.', 'wds' ); ?></p>
120
-
121
- <div class="wds-ignore-container">
122
- <button type="button"
123
- class="wds-ignore wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark button-dark-o"
124
- data-check_id="readability">
125
- <?php esc_html_e( 'Ignore', 'wds' ); ?>
126
- </button>
127
- </div>
128
- </div>
129
- </div>
130
- </div>
131
- </div>
132
  </div>
1
  <?php
 
 
 
 
2
  /**
3
  * @var $model \Smartcrawl_Model_Analysis
4
  */
17
  $readability_strategy = Smartcrawl_String::get_readability_strategy();
18
 
19
  if ( $readability_ignored ) {
20
+ $accordion_item_classes_array[] = 'disabled';
21
  }
22
 
23
  $total_possible_score = Smartcrawl_String::READABILITY_KINCAID === $readability_strategy ? '100' : '';
24
  $readability_level_description = $model->get_readability_level_description( $readability_level );
25
  $readability_state = $model->get_kincaid_readability_state( $readability_score, $readability_ignored );
26
+ $state_class = sprintf(
27
+ 'sui-%s',
28
  $readability_state
29
  );
30
+ $accordion_item_classes_array[] = $state_class;
31
+ $accordion_item_classes_array[] = sprintf(
32
+ 'wds-check-%s',
33
  $readability_state
34
  );
35
+ $accordion_item_classes = implode( ' ', $accordion_item_classes_array );
36
  $refresh_analysis_disabled = 'auto-draft' === get_post_status() ? 'disabled' : '';
37
+ $icon_class = 'success' === $readability_state
38
+ ? $state_class . ' sui-icon-check-tick'
39
+ : $state_class . ' sui-icon-info';
40
+ $tag_class = sprintf(
41
+ 'sui-tag-%s',
42
+ $readability_state
43
+ );
44
+ $whitelabel_class = Smartcrawl_White_Label::get()->summary_class();
45
  ?>
46
 
47
  <div class="wds-readability-report wds-report"
48
  data-readability-state="<?php echo esc_attr( $readability_state ); ?>">
49
 
50
+ <div id="wds-readability-stats" class="sui-summary sui-summary-sm <?php echo esc_attr( $whitelabel_class ); ?>">
51
+ <div class="sui-summary-image-space"></div>
52
+
53
+ <div class="sui-summary-segment">
54
+ <div class="sui-summary-details">
55
+ <span class="sui-summary-large"><?php echo esc_html( $readability_score ); ?></span>
56
+ <i class="<?php echo esc_attr( $icon_class ); ?>"></i>
57
+ <?php if ( $total_possible_score ) : ?>
58
+ <span class="sui-summary-percent">/<?php echo esc_html( $total_possible_score ); ?></span>
59
+ <?php endif; ?>
60
+ <span class="sui-summary-sub"><?php esc_html_e( 'Readability score', 'wds' ); ?></span>
61
  </div>
 
62
  </div>
63
 
64
+ <div class="sui-summary-segment">
65
+ <?php if ( $readability_level_description ): ?>
66
+ <small><?php echo wp_kses( $readability_level_description, array( 'strong' => array() ) ); ?></small>
67
+ <br/>
68
+ <?php endif; ?>
69
+
70
+ <button class="sui-button sui-button-ghost wds-refresh-analysis wds-analysis-readability wds-disabled-during-request"
71
+ type="button" <?php echo esc_attr( $refresh_analysis_disabled ); ?>>
72
+ <span class="sui-loading-text">
73
+ <i class="sui-icon-update" aria-hidden="true"></i>
74
 
75
+ <?php esc_html_e( 'Refresh', 'wds' ); ?>
76
+ </span>
77
+
78
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
79
  </button>
80
  </div>
81
  </div>
82
 
83
+ <p class="wds-interstitial-text">
84
+ <small>
85
+ <strong><?php esc_html_e( 'Difficult', 'wds' ); ?></strong> <?php esc_html_e( '= Less than 60', 'wds' ); ?>
86
+ </small>
87
+ <small>
88
+ <strong><?php esc_html_e( 'OK', 'wds' ); ?></strong> <?php esc_html_e( '= 60 to 70', 'wds' ); ?>
89
+ </small>
90
+ <small>
91
+ <strong><?php esc_html_e( 'Easy', 'wds' ); ?></strong> <?php esc_html_e( '= 70+', 'wds' ); ?>
92
+ </small>
93
+ </p>
94
 
95
+ <?php $this->_render( 'notice', array(
96
+ 'class' => 'wds-analysis-working',
97
+ 'message' => esc_html__( 'Analyzing content, please wait a few moments', 'wds' ),
98
+ ) ); ?>
99
+
100
+ <?php $this->_render( 'metabox/metabox-readability-report-inner', array(
101
+ 'accordion_item_classes' => $accordion_item_classes,
102
+ 'readability_ignored' => $readability_ignored,
103
+ 'icon_class' => $icon_class,
104
+ 'tag_class' => $tag_class,
105
+ 'readability_level' => $readability_level,
106
+ 'readability_levels_map' => $readability_levels_map,
107
+ ) ); ?>
108
+
109
+ <p class="wds-interstitial-text">
110
+ <small><?php esc_html_e( 'More advanced readability tests coming soon.', 'wds' ); ?></small>
111
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  </div>
includes/admin/templates/metabox/analysis-seo-analysis.php CHANGED
@@ -1,41 +1,40 @@
1
  <?php
2
- if ( ! Smartcrawl_Settings::get_setting( 'analysis-seo' ) ) {
3
- return false;
4
- }
5
-
6
  $checks = empty( $checks ) ? array() : $checks;
7
  $error_count = empty( $error_count ) ? 0 : $error_count;
8
  $focus_keywords_available = empty( $focus_keywords_available ) ? false : $focus_keywords_available;
 
 
 
 
 
 
9
  ?>
10
 
11
  <?php if ( ! $focus_keywords_available ) : ?>
12
- <div class="wds-seo-analysis wds-no-focus-keywords">
13
- <div class="wds-notice wds-notice-warning">
14
- <p><?php esc_html_e( 'You need to add focus keywords to see recommendations for this article.', 'wds' ); ?></p>
15
- </div>
 
16
  </div>
17
  <?php return; ?>
18
  <?php endif; // phpcs:ignore -- PHPCS misfires here and complains about the return statement above ?>
19
 
20
  <div class="wds-seo-analysis wds-report" data-errors="<?php echo esc_attr( $error_count ); ?>">
21
 
22
- <div class="wds-analysis-working">
23
- <p>
24
- <?php esc_html_e( 'Analyzing content, please wait a few moments', 'wds' ); ?>
25
- </p>
26
- </div>
27
 
28
  <div class="wds-report-inner">
29
- <div class="wds-notice <?php echo $error_count > 0 ? 'wds-notice-warning' : 'wds-notice-success'; ?>">
30
- <p>
31
- <?php if ( $error_count > 0 ) : ?>
32
- <?php printf( esc_html__( 'You have %d SEO recommendations. We recommend you satisfy as many improvements as possible to ensure your content gets found.', 'wds' ), intval( $error_count ) ); ?>
33
- <?php else : ?>
34
- <?php esc_html_e( 'You have optimized your SEO to the max. Bravo!', 'wds' ); ?>
35
- <?php endif; ?>
36
- </p>
37
- </div>
38
- <div class="wds-accordion">
39
  <?php foreach ( $checks as $check_id => $result ) : ?>
40
  <?php
41
  $passed = $result['status'];
@@ -43,60 +42,97 @@ $focus_keywords_available = empty( $focus_keywords_available ) ? false : $focus_
43
  $recommendation = $result['recommendation'];
44
  $more_info = $result['more_info'];
45
  $status_msg = $result['status_msg'];
46
-
47
  $classes_array = array();
48
- $classes_array[] = $passed ? 'wds-check-success' : 'wds-check-warning';
49
- $classes_array[] = $ignored ? 'wds-check-invalid disabled' : '';
 
 
 
 
 
 
 
 
 
50
  $classes = implode( ' ', $classes_array );
51
  ?>
52
  <div id="wds-check-<?php echo esc_attr( $check_id ); ?>"
53
- class="wds-check-item wds-accordion-section <?php echo esc_attr( $classes ); ?>">
54
- <div class="wds-accordion-handle">
55
- <div class="wds-accordion-handle-part">
 
56
  <?php echo wp_kses_post( $status_msg ); ?>
57
  </div>
58
  <?php if ( $ignored ) : ?>
59
- <div class="wds-unignore-container wds-accordion-handle-part">
60
  <button type="button"
61
  id="wds-unignore-check-<?php echo esc_attr( $check_id ); ?>"
62
- class="wds-unignore wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button button-small button-dark-o"
63
  data-check_id="<?php echo esc_attr( $check_id ); ?>">
64
- <?php esc_html_e( 'Restore', 'wds' ); ?>
 
 
 
 
 
 
65
  </button>
66
  </div>
67
- <?php endif; ?>
68
- </div>
69
- <div class="wds-accordion-content">
70
- <?php if ( $recommendation ) : ?>
71
- <div class="wds-recommendation">
72
- <div class="wds-small-text"><strong><?php esc_html_e( 'Recommendation', 'wds' ); ?></strong>
73
- </div>
74
- <p class="wds-small-text"><?php echo wp_kses_post( $recommendation ); ?></p>
75
- </div>
76
- <?php endif; ?>
77
-
78
- <?php if ( $more_info ) : ?>
79
- <div class="wds-more-info">
80
- <div class="wds-small-text"><strong><?php esc_html_e( 'More Info', 'wds' ); ?></strong>
81
- </div>
82
- <p class="wds-small-text"><?php echo wp_kses_post( $more_info ); ?></p>
83
- </div>
84
- <?php endif; ?>
85
-
86
- <?php if ( ! $ignored ) : ?>
87
- <div class="wds-ignore-container">
88
- <button type="button"
89
- id="wds-ignore-check-<?php echo esc_attr( $check_id ); ?>"
90
- class="wds-ignore wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark-o"
91
- data-check_id="<?php echo esc_attr( $check_id ); ?>">
92
- <?php esc_html_e( 'Ignore', 'wds' ); ?>
93
  </button>
94
  </div>
95
  <?php endif; ?>
96
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  </div>
98
  <?php endforeach; ?>
99
- <div class="cf"></div>
100
  </div>
 
101
  </div>
102
  </div>
1
  <?php
 
 
 
 
2
  $checks = empty( $checks ) ? array() : $checks;
3
  $error_count = empty( $error_count ) ? 0 : $error_count;
4
  $focus_keywords_available = empty( $focus_keywords_available ) ? false : $focus_keywords_available;
5
+ $pending_recommendations_message = _n(
6
+ 'You have %d SEO recommendation. We recommend you satisfy as many improvements as possible to ensure your content gets found.',
7
+ 'You have %d SEO recommendations. We recommend you satisfy as many improvements as possible to ensure your content gets found.',
8
+ $error_count,
9
+ 'wds'
10
+ );
11
  ?>
12
 
13
  <?php if ( ! $focus_keywords_available ) : ?>
14
+ <div class="wds-seo-analysis wds-no-focus-keywords" data-errors="-1">
15
+ <?php $this->_render( 'notice', array(
16
+ 'message' => esc_html__( 'You need to add focus keywords to see recommendations for this article.', 'wds' ),
17
+ 'class' => 'sui-notice-inactive',
18
+ ) ); ?>
19
  </div>
20
  <?php return; ?>
21
  <?php endif; // phpcs:ignore -- PHPCS misfires here and complains about the return statement above ?>
22
 
23
  <div class="wds-seo-analysis wds-report" data-errors="<?php echo esc_attr( $error_count ); ?>">
24
 
25
+ <?php $this->_render( 'notice', array(
26
+ 'message' => esc_html__( 'Analyzing content, please wait a few moments', 'wds' ),
27
+ 'class' => 'wds-analysis-working',
28
+ ) ); ?>
 
29
 
30
  <div class="wds-report-inner">
31
+ <?php $this->_render( 'notice', array(
32
+ 'message' => $error_count > 0
33
+ ? sprintf( $pending_recommendations_message, intval( $error_count ) )
34
+ : esc_html__( 'All SEO recommendations are met. Your content is as optimized as possible - nice work!', 'wds' ),
35
+ 'class' => $error_count > 0 ? 'sui-notice-warning' : 'sui-notice-success',
36
+ ) ); ?>
37
+ <div class="wds-accordion sui-accordion">
 
 
 
38
  <?php foreach ( $checks as $check_id => $result ) : ?>
39
  <?php
40
  $passed = $result['status'];
42
  $recommendation = $result['recommendation'];
43
  $more_info = $result['more_info'];
44
  $status_msg = $result['status_msg'];
45
+
46
  $classes_array = array();
47
+ if ( $ignored ) {
48
+ $classes_array[] = 'wds-check-invalid disabled';
49
+ $icon_class = 'sui-icon-info';
50
+ } else {
51
+ $state_class = $passed ? 'sui-success' : 'sui-warning';
52
+ $icon_class = $passed
53
+ ? $state_class . ' sui-icon-check-tick'
54
+ : $state_class . ' sui-icon-info';
55
+ $classes_array[] = $state_class;
56
+ $classes_array[] = $passed ? 'wds-check-success' : 'wds-check-warning';
57
+ }
58
  $classes = implode( ' ', $classes_array );
59
  ?>
60
  <div id="wds-check-<?php echo esc_attr( $check_id ); ?>"
61
+ class="wds-check-item sui-accordion-item <?php echo esc_attr( $classes ); ?>">
62
+ <div class="<?php echo $ignored ? 'wds-ignored-item-header' : 'sui-accordion-item-header'; ?>">
63
+ <div class="sui-accordion-item-title sui-accordion-col-8">
64
+ <i aria-hidden="true" class="<?php echo esc_attr( $icon_class ); ?>"></i>
65
  <?php echo wp_kses_post( $status_msg ); ?>
66
  </div>
67
  <?php if ( $ignored ) : ?>
68
+ <div class="sui-accordion-col-4">
69
  <button type="button"
70
  id="wds-unignore-check-<?php echo esc_attr( $check_id ); ?>"
71
+ class="wds-unignore wds-disabled-during-request sui-button sui-button-ghost"
72
  data-check_id="<?php echo esc_attr( $check_id ); ?>">
73
+ <span class="sui-loading-text">
74
+ <i class="sui-icon-undo" aria-hidden="true"></i>
75
+
76
+ <?php esc_html_e( 'Restore', 'wds' ); ?>
77
+ </span>
78
+
79
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
80
  </button>
81
  </div>
82
+ <?php else : ?>
83
+ <div class="sui-accordion-col-4">
84
+ <button class="sui-button-icon sui-accordion-open-indicator"
85
+ type="button"
86
+ aria-label="<?php esc_html_e( 'Open item', 'wds' ); ?>">
87
+ <i class="sui-icon-chevron-down" aria-hidden="true"></i>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  </button>
89
  </div>
90
  <?php endif; ?>
91
  </div>
92
+ <div class="sui-accordion-item-body wds-check-item-content">
93
+ <div class="sui-box">
94
+ <div class="sui-box-body">
95
+
96
+ <?php if ( $recommendation ) : ?>
97
+ <div class="wds-recommendation">
98
+ <div>
99
+ <strong><?php esc_html_e( 'Recommendation', 'wds' ); ?></strong>
100
+ </div>
101
+ <p><?php echo wp_kses_post( $recommendation ); ?></p>
102
+ </div>
103
+ <?php endif; ?>
104
+
105
+ <?php if ( $more_info ) : ?>
106
+ <div class="wds-more-info">
107
+ <div>
108
+ <strong><?php esc_html_e( 'More Info', 'wds' ); ?></strong>
109
+ </div>
110
+ <p><?php echo wp_kses_post( $more_info ); ?></p>
111
+ </div>
112
+ <?php endif; ?>
113
+
114
+ <?php if ( ! $ignored ) : ?>
115
+ <div class="wds-ignore-container">
116
+ <button type="button"
117
+ id="wds-ignore-check-<?php echo esc_attr( $check_id ); ?>"
118
+ class="wds-ignore wds-disabled-during-request sui-button sui-button-ghost"
119
+ data-check_id="<?php echo esc_attr( $check_id ); ?>">
120
+ <span class="sui-loading-text">
121
+ <i class="sui-icon-eye-hide" aria-hidden="true"></i>
122
+
123
+ <?php esc_html_e( 'Ignore', 'wds' ); ?>
124
+ </span>
125
+
126
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
127
+ </button>
128
+ </div>
129
+ <?php endif; ?>
130
+ </div>
131
+ </div>
132
+ </div>
133
  </div>
134
  <?php endforeach; ?>
 
135
  </div>
136
+ <div class="cf"></div>
137
  </div>
138
  </div>
includes/admin/templates/metabox/analysis.php DELETED
@@ -1,5 +0,0 @@
1
- <div class="wds-report">
2
- <p><a href="#reload"><?php esc_html_e( 'Reload', 'wds' ); ?></a></p>
3
- <?php require_once SMARTCRAWL_PLUGIN_DIR . 'admin/templates/metabox/analysis-seo-analysis.php'; ?>
4
- <?php require_once SMARTCRAWL_PLUGIN_DIR . 'admin/templates/metabox/analysis-readability.php'; ?>
5
- </div>
 
 
 
 
 
includes/admin/templates/metabox/horizontal-tab-nav.php CHANGED
@@ -1,14 +1,31 @@
1
  <?php
2
- $tabs = empty( $tabs ) ? array() : $tabs;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  $first_tab = true;
4
  ?>
5
- <div class="wds-horizontal-tab-nav">
6
  <?php foreach ( $tabs as $tab_id => $tab_name ) : ?>
7
 
8
- <div class="wds-nav-item <?php echo $first_tab ? 'active' : ''; ?>">
9
- <label for="<?php echo esc_attr( $tab_id ); ?>">
10
- <?php echo wp_kses_post( $tab_name ); ?>
11
- </label>
12
  </div>
13
 
14
  <?php $first_tab = false; ?>
1
  <?php
2
+ $tabs = array();
3
+ $seo_sections = empty( $seo_sections ) ? array() : $seo_sections;
4
+ if ( $seo_sections ) {
5
+ $tabs['wds_seo'] = esc_html__( 'SEO', 'wds' );
6
+ }
7
+
8
+ $readability_sections = empty( $readability_sections ) ? array() : $readability_sections;
9
+ if ( $readability_sections ) {
10
+ $tabs['wds_readability'] = esc_html__( 'Readability', 'wds' );
11
+ }
12
+
13
+ $social_sections = empty( $social_sections ) ? array() : $social_sections;
14
+ if ( $social_sections ) {
15
+ $tabs['wds_social'] = esc_html__( 'Social', 'wds' );
16
+ }
17
+
18
+ $advanced_sections = empty( $advanced_sections ) ? array() : $advanced_sections;
19
+ if ( $advanced_sections ) {
20
+ $tabs['wds_advanced'] = esc_html__( 'Advanced', 'wds' );
21
+ }
22
  $first_tab = true;
23
  ?>
24
+ <div data-tabs>
25
  <?php foreach ( $tabs as $tab_id => $tab_name ) : ?>
26
 
27
+ <div class="<?php echo $first_tab ? 'active' : ''; ?> <?php echo esc_attr( $tab_id ); ?>-tab">
28
+ <?php echo wp_kses_post( apply_filters( 'wds-metabox-nav-item', $tab_name, $tab_id ) ); ?>
 
 
29
  </div>
30
 
31
  <?php $first_tab = false; ?>
includes/admin/templates/metabox/horizontal-tab.php CHANGED
@@ -1,19 +1,10 @@
1
- <section class="wds-horizontal-tab">
2
- <?php
3
- $tab_id = empty( $tab_id ) ? '' : $tab_id;
4
- $is_active = empty( $is_active ) ? false : $is_active;
5
- $content_template = empty( $content_template ) ? '' : $content_template;
6
- $content_args = empty( $content_args ) ? array() : $content_args;
7
- ?>
8
- <input
9
- type="radio"
10
- name="wds-horizontal-tab"
11
- autocomplete="off"
12
- id="<?php echo esc_attr( $tab_id ); ?>"
13
- value="<?php echo esc_attr( $tab_id ); ?>"
14
- <?php checked( $is_active ); ?> />
15
 
16
- <div class="wds-horizontal-tab-content <?php echo esc_attr( $tab_id ); ?>">
17
- <?php $this->_render( $content_template, $content_args ); ?>
18
- </div>
19
- </section>
1
+ <?php
2
+ $tab_id = empty( $tab_id ) ? '' : $tab_id;
3
+ $is_active = empty( $is_active ) ? false : $is_active;
4
+ $content_template = empty( $content_template ) ? '' : $content_template;
5
+ $content_args = empty( $content_args ) ? array() : $content_args;
6
+ ?>
 
 
 
 
 
 
 
 
7
 
8
+ <div class="<?php echo esc_attr( $tab_id ); ?> <?php echo $is_active ? 'active' : ''; ?>">
9
+ <?php $this->_render( $content_template, $content_args ); ?>
10
+ </div>
 
includes/admin/templates/metabox/metabox-advanced-autolinks.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $autolinks_exclude = empty( $autolinks_exclude ) ? false : $autolinks_exclude;
3
+ ?>
4
+
5
+ <div class="sui-box-settings-row">
6
+ <div class="sui-box-settings-col-1">
7
+ <label class="sui-settings-label" for="wds_autolinks-exclude">
8
+ <?php esc_html_e( 'Automatic Linking', 'wds' ); ?>
9
+ </label>
10
+ <p class="sui-description">
11
+ <?php esc_html_e( 'You can prevent this particular post from being auto-linked', 'wds' ); ?>
12
+ </p>
13
+ </div>
14
+ <div class="sui-box-settings-col-2">
15
+ <?php
16
+ $this->_render( 'toggle-item', array(
17
+ 'inverted' => true,
18
+ 'field_name' => 'wds_autolinks-exclude',
19
+ 'checked' => $autolinks_exclude ? 'checked="checked"' : '',
20
+ 'item_label' => esc_html__( 'Enable automatic linking for this post', 'wds' ),
21
+ ) );
22
+ ?>
23
+ </div>
24
+ </div>
includes/admin/templates/metabox/metabox-advanced-canonical.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $canonical_url = empty( $canonical_url ) ? '' : $canonical_url;
3
+ ?>
4
+
5
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-canonical_area', true ) ) : ?>
6
+ <div class="sui-box-settings-row">
7
+ <div class="sui-box-settings-col-1">
8
+ <label for="wds_canonical" class="sui-settings-label"><?php esc_html_e( 'Canonical', 'wds' ); ?></label>
9
+ <p class="sui-description">
10
+ <?php esc_html_e( 'If you have several similar versions of this page you can point search engines to the canonical or "genuine" version to avoid duplicate content issues.', 'wds' ); ?>
11
+ </p>
12
+ </div>
13
+ <div class="sui-box-settings-col-2">
14
+ <input type='text' id='wds_canonical' name='wds_canonical'
15
+ value='<?php echo esc_attr( $canonical_url ); ?>'
16
+ class='wds sui-form-control'/>
17
+ <span
18
+ class="sui-description"><?php esc_html_e( 'Enter the full canonical URL including http:// or https://', 'wds' ); ?></span>
19
+ </div>
20
+ </div>
21
+ <?php endif; ?>
includes/admin/templates/metabox/metabox-advanced-indexing.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $robots_index_value = empty( $robots_index_value ) ? false : true;
3
+ $robots_follow_value = empty( $robots_follow_value ) ? false : true;
4
+ $robots_noindex_value = empty( $robots_noindex_value ) ? false : $robots_noindex_value;
5
+ $robots_nofollow_value = empty( $robots_nofollow_value ) ? false : $robots_nofollow_value;
6
+ $advanced_value = empty( $advanced_value ) ? array() : $advanced_value;
7
+ $post_type_noindexed = empty( $post_type_noindexed ) ? false : true;
8
+ $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
9
+ ?>
10
+
11
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-robots_area', true ) ) : ?>
12
+ <div class="sui-box-settings-row">
13
+ <div class="sui-box-settings-col-1">
14
+ <label class="sui-settings-label"><?php esc_html_e( 'Indexing', 'wds' ); ?></label>
15
+ <p class="sui-description">
16
+ <?php esc_html_e( 'Choose how search engines will index this particular page.', 'wds' ); ?>
17
+ </p>
18
+ </div>
19
+ <div class="sui-box-settings-col-2">
20
+ <?php
21
+ if ( $post_type_noindexed ) {
22
+ $this->_render( 'toggle-item', array(
23
+ 'field_name' => 'wds_meta-robots-index',
24
+ 'field_id' => 'wds_meta-robots-index',
25
+ 'checked' => $robots_index_value ? 'checked="checked"' : '',
26
+ 'item_label' => esc_html__( 'Index - Override Post Type Setting', 'wds' ),
27
+ 'item_description' => esc_html__( 'Instruct search engines whether or not you want this post to appear in search results.', 'wds' ),
28
+ ) );
29
+ } else {
30
+ $this->_render( 'toggle-item', array(
31
+ 'inverted' => true,
32
+ 'field_name' => 'wds_meta-robots-noindex',
33
+ 'field_id' => 'wds_meta-robots-noindex',
34
+ 'checked' => $robots_noindex_value ? 'checked="checked"' : '',
35
+ 'item_label' => esc_html__( 'Index', 'wds' ),
36
+ 'item_description' => esc_html__( 'Instruct search engines whether or not you want this post to appear in search results.', 'wds' ),
37
+ ) );
38
+ }
39
+
40
+ if ( $post_type_nofollowed ) {
41
+ $this->_render( 'toggle-item', array(
42
+ 'field_name' => 'wds_meta-robots-follow',
43
+ 'field_id' => 'wds_meta-robots-follow',
44
+ 'checked' => $robots_follow_value ? 'checked="checked"' : '',
45
+ 'item_label' => esc_html__( 'Follow - Override Post Type Setting', 'wds' ),
46
+ 'item_description' => esc_html__( 'Tells search engines whether or not to follow the links on your page and crawl them too.', 'wds' ),
47
+ ) );
48
+ } else {
49
+ $this->_render( 'toggle-item', array(
50
+ 'inverted' => true,
51
+ 'field_name' => 'wds_meta-robots-nofollow',
52
+ 'field_id' => 'wds_meta-robots-nofollow',
53
+ 'checked' => $robots_nofollow_value ? 'checked="checked"' : '',
54
+ 'item_label' => esc_html__( 'Follow', 'wds' ),
55
+ 'item_description' => esc_html__( 'Tells search engines whether or not to follow the links on your page and crawl them too.', 'wds' ),
56
+ ) );
57
+ }
58
+
59
+ $this->_render( 'toggle-item', array(
60
+ 'inverted' => true,
61
+ 'item_value' => 'noarchive',
62
+ 'field_name' => 'wds_meta-robots-adv[noarchive]',
63
+ 'field_id' => 'wds_meta-robots-noarchive',
64
+ 'checked' => in_array( 'noarchive', $advanced_value, true ) ? 'checked="checked"' : '',
65
+ 'item_label' => esc_html__( 'Archive', 'wds' ),
66
+ 'item_description' => esc_html__( 'Instructs search engines to store a cached version of this page.', 'wds' ),
67
+ ) );
68
+
69
+ $this->_render( 'toggle-item', array(
70
+ 'inverted' => true,
71
+ 'item_value' => 'nosnippet',
72
+ 'field_name' => 'wds_meta-robots-adv[nosnippet]',
73
+ 'field_id' => 'wds_meta-robots-nosnippet',
74
+ 'checked' => in_array( 'nosnippet', $advanced_value, true ) ? 'checked="checked"' : '',
75
+ 'item_label' => esc_html__( 'Snippet', 'wds' ),
76
+ 'item_description' => esc_html__( 'Allows search engines to show a snippet of this page in the search results and prevents them from caching the page.', 'wds' ),
77
+ ) );
78
+ ?>
79
+ </div>
80
+ </div>
81
+ <?php endif; ?>
includes/admin/templates/metabox/metabox-advanced-redirect.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $redirect_url = empty( $redirect_url ) ? '' : $redirect_url;
3
+ $has_permission = empty( $has_permission ) ? false : $has_permission;
4
+ ?>
5
+
6
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-redirect_area', true ) && $has_permission ) : ?>
7
+ <div class="sui-box-settings-row">
8
+ <div class="sui-box-settings-col-1">
9
+ <label for="wds_redirect"
10
+ class="sui-settings-label"><?php esc_html_e( '301 Redirect', 'wds' ); ?></label>
11
+ <p class="sui-description">
12
+ <?php esc_html_e( 'Send visitors to this URL to another page.', 'wds' ); ?>
13
+ </p>
14
+ </div>
15
+ <div class="sui-box-settings-col-2">
16
+ <input type='text' id='wds_redirect' name='wds_redirect'
17
+ value='<?php echo esc_attr( $redirect_url ); ?>'
18
+ class='wds sui-form-control'/>
19
+ <span class="sui-description">
20
+ <?php esc_html_e( 'Enter the URL to send traffic to including http:// or https://', 'wds' ); ?>
21
+ </span>
22
+ </div>
23
+ </div>
24
+ <?php endif; ?>
includes/admin/templates/metabox/metabox-advanced-sitemap-priority.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $sitemap_priority_options = empty( $sitemap_priority_options ) ? array() : $sitemap_priority_options;
3
+ $sitemap_priority = empty( $sitemap_priority ) ? '' : $sitemap_priority;
4
+ ?>
5
+
6
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-sitemap_priority_area', true ) ) : ?>
7
+ <div class="sui-box-settings-row">
8
+ <div class="sui-box-settings-col-1">
9
+ <label for='wds_sitemap-priority'
10
+ class="sui-settings-label"><?php esc_html_e( 'Sitemap Priority', 'wds' ); ?></label>
11
+ </div>
12
+ <div class="sui-box-settings-col-2">
13
+ <select name='wds_sitemap-priority'
14
+ id='wds_sitemap-priority'
15
+ class="sui-select"
16
+ data-minimum-results-for-search="-1">
17
+
18
+ <?php foreach ( $sitemap_priority_options as $key => $label ) : ?>
19
+ <option value='<?php echo esc_attr( $key ); ?>' <?php selected( $key, $sitemap_priority ); ?>>
20
+ <?php echo esc_html( $label ); ?>
21
+ </option>
22
+ <?php endforeach; ?>
23
+ </select>
24
+ </div>
25
+ </div>
26
+ <?php endif; ?>
includes/admin/templates/metabox/metabox-dummy-preview.php CHANGED
@@ -1,9 +1,9 @@
1
  <div class="wds-metabox-preview">
2
- <label class="wds-label"><?php esc_html_e( 'Google Preview' ); ?></label>
3
 
4
  <?php
5
  if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
6
  $this->_render( 'onpage/onpage-preview' );
7
  }
8
  ?>
9
- </div>
1
  <div class="wds-metabox-preview">
2
+ <label class="sui-label"><?php esc_html_e( 'Google Preview' ); ?></label>
3
 
4
  <?php
5
  if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
6
  $this->_render( 'onpage/onpage-preview' );
7
  }
8
  ?>
9
+ </div>
includes/admin/templates/metabox/metabox-main.php CHANGED
@@ -6,95 +6,73 @@
6
  */
7
 
8
  $post = empty( $post ) ? null : $post;
9
- $robots_noindex_value = empty( $robots_noindex_value ) ? false : $robots_noindex_value;
10
- $robots_nofollow_value = empty( $robots_nofollow_value ) ? false : $robots_nofollow_value;
11
- $robots_index_value = empty( $robots_index_value ) ? false : $robots_index_value;
12
- $robots_follow_value = empty( $robots_follow_value ) ? false : $robots_follow_value;
13
- $advanced_value = empty( $advanced_value ) ? array() : $advanced_value;
14
- $advanced_options = empty( $advanced_options ) ? array() : $advanced_options;
15
- $sitemap_priority_options = empty( $sitemap_priority_options ) ? array() : $sitemap_priority_options;
16
- $all_options = Smartcrawl_Settings::get_options();
17
- $og_setting_enabled = (bool) smartcrawl_get_array_value( $all_options, 'og-enable' );
18
- $og_post_type_enabled = (bool) smartcrawl_get_array_value( $all_options, 'og-active-' . get_post_type( $post ) );
19
- $twitter_post_type_enabled = (bool) smartcrawl_get_array_value( $all_options, 'twitter-active-' . get_post_type( $post ) );
20
- $twitter_setting_enabled = (bool) smartcrawl_get_array_value( $all_options, 'twitter-card-enable' );
21
- $post_type_noindexed = (bool) smartcrawl_get_array_value( $all_options, sprintf( 'meta_robots-noindex-%s', get_post_type( $post ) ) );
22
- $post_type_nofollowed = (bool) smartcrawl_get_array_value( $all_options, sprintf( 'meta_robots-nofollow-%s', get_post_type( $post ) ) );
23
- $show_social_tab = ( $og_setting_enabled && $og_post_type_enabled ) || ( $twitter_setting_enabled && $twitter_post_type_enabled );
24
-
25
- $tabs['wds_seo'] = esc_html__( 'SEO', 'wds' ) . '<span class="wds-issues"><span></span></span>';
26
- $tabs['wds_readability'] = esc_html__( 'Readability', 'wds' ) . '<span class="wds-issues"><span></span></span>';
27
- if ( $show_social_tab ) {
28
- $tabs['wds_social'] = esc_html__( 'Social', 'wds' );
29
- }
30
- $tabs['wds_advanced'] = esc_html__( 'Advanced', 'wds' );
31
-
32
- if ( ! Smartcrawl_Settings::get_setting( 'analysis-readability' ) ) {
33
- unset( $tabs['wds_readability'] );
34
- }
35
  ?>
36
- <div class="wpmud wds-metabox">
37
- <div id="container" class="wds-horizontal-tabs">
38
- <?php wp_nonce_field( 'wds-metabox-nonce', '_wds_nonce' ); ?>
39
- <?php
40
- $this->_render( 'metabox/horizontal-tab-nav', array( 'tabs' => $tabs ) );
41
- ?>
42
- <?php
43
- $this->_render( 'metabox/horizontal-tab', array(
44
- 'tab_id' => 'wds_seo',
45
- 'is_active' => true,
46
- 'content_template' => 'metabox/metabox-tab-seo',
47
- 'content_args' => array(
48
- 'post' => $post,
49
- ),
50
- ) );
51
- ?>
 
 
 
 
 
 
 
52
 
53
- <?php
54
- if ( Smartcrawl_Settings::get_setting( 'analysis-readability' ) ) {
55
- $this->_render( 'metabox/horizontal-tab', array(
56
- 'tab_id' => 'wds_readability',
57
- 'content_template' => 'metabox/metabox-tab-readability',
58
- 'content_args' => array(
59
- 'post' => $post,
60
- ),
61
- ) );
62
- }
63
- ?>
64
 
65
- <?php
66
- if ( $show_social_tab ) {
67
- $this->_render( 'metabox/horizontal-tab', array(
68
- 'tab_id' => 'wds_social',
69
- 'content_template' => 'metabox/metabox-tab-social',
70
- 'content_args' => array(
71
- 'post' => $post,
72
- 'og_setting_enabled' => $og_setting_enabled,
73
- 'og_post_type_enabled' => $og_post_type_enabled,
74
- 'twitter_setting_enabled' => $twitter_setting_enabled,
75
- 'twitter_post_type_enabled' => $twitter_post_type_enabled,
76
- ),
77
- ) );
78
- }
79
- ?>
80
 
81
- <?php
82
- $this->_render( 'metabox/horizontal-tab', array(
83
- 'tab_id' => 'wds_advanced',
84
- 'content_template' => 'metabox/metabox-tab-advanced',
85
- 'content_args' => array(
86
- 'post' => $post,
87
- 'robots_noindex_value' => $robots_noindex_value,
88
- 'robots_nofollow_value' => $robots_nofollow_value,
89
- 'robots_index_value' => $robots_index_value,
90
- 'robots_follow_value' => $robots_follow_value,
91
- 'advanced_value' => $advanced_value,
92
- 'advanced_options' => $advanced_options,
93
- 'sitemap_priority_options' => $sitemap_priority_options,
94
- 'post_type_noindexed' => $post_type_noindexed,
95
- 'post_type_nofollowed' => $post_type_nofollowed,
96
- ),
97
- ) );
98
- ?>
99
  </div>
100
  </div>
6
  */
7
 
8
  $post = empty( $post ) ? null : $post;
9
+ $seo_sections = apply_filters( 'wds-sections-metabox-seo', array(), $post );
10
+ $readability_sections = apply_filters( 'wds-sections-metabox-readability', array(), $post );
11
+ $social_sections = apply_filters( 'wds-sections-metabox-social', array(), $post );
12
+ $advanced_sections = apply_filters( 'wds-sections-metabox-advanced', array(), $post );
13
+ $is_active = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  ?>
15
+ <div class="<?php echo esc_attr( smartcrawl_sui_class() ); ?>">
16
+ <div class="sui-wrap wds-page wrap wrap-wds wds-metabox">
17
+ <div class="sui-tabs">
18
+ <?php wp_nonce_field( 'wds-metabox-nonce', '_wds_nonce' ); ?>
19
+ <?php $this->_render( 'metabox/horizontal-tab-nav', array(
20
+ 'seo_sections' => $seo_sections,
21
+ 'readability_sections' => $readability_sections,
22
+ 'social_sections' => $social_sections,
23
+ 'advanced_sections' => $advanced_sections,
24
+ ) ); ?>
25
+ <div data-panes>
26
+ <?php
27
+ if ( $seo_sections ) {
28
+ $this->_render( 'metabox/horizontal-tab', array(
29
+ 'tab_id' => 'wds_seo',
30
+ 'is_active' => $is_active,
31
+ 'content_template' => 'metabox/metabox-tab-seo',
32
+ 'content_args' => array(
33
+ 'seo_sections' => $seo_sections,
34
+ ),
35
+ ) );
36
+ $is_active = false;
37
+ }
38
 
39
+ if ( $readability_sections ) {
40
+ $this->_render( 'metabox/horizontal-tab', array(
41
+ 'tab_id' => 'wds_readability',
42
+ 'is_active' => $is_active,
43
+ 'content_template' => 'metabox/metabox-tab-readability',
44
+ 'content_args' => array(
45
+ 'readability_sections' => $readability_sections,
46
+ ),
47
+ ) );
48
+ $is_active = false;
49
+ }
50
 
51
+ if ( $social_sections ) {
52
+ $this->_render( 'metabox/horizontal-tab', array(
53
+ 'tab_id' => 'wds_social',
54
+ 'is_active' => $is_active,
55
+ 'content_template' => 'metabox/metabox-tab-social',
56
+ 'content_args' => array(
57
+ 'social_sections' => $social_sections,
58
+ ),
59
+ ) );
60
+ $is_active = false;
61
+ }
 
 
 
 
62
 
63
+ if ( $advanced_sections ) {
64
+ $this->_render( 'metabox/horizontal-tab', array(
65
+ 'tab_id' => 'wds_advanced',
66
+ 'is_active' => $is_active,
67
+ 'content_template' => 'metabox/metabox-tab-advanced',
68
+ 'content_args' => array(
69
+ 'advanced_sections' => $advanced_sections,
70
+ ),
71
+ ) );
72
+ $is_active = false;
73
+ }
74
+ ?>
75
+ </div>
76
+ </div>
 
 
 
 
77
  </div>
78
  </div>
includes/admin/templates/metabox/metabox-meta-edit-form.php CHANGED
@@ -8,86 +8,79 @@ if ( $post ) {
8
  ?>
9
  <div class="wds-toggleable inactive wds-edit-meta-toggleable">
10
  <label>
11
- <a class="button button-dark button-small"><?php esc_html_e( 'Edit Meta', 'wds' ); ?></a>
12
- <input type="checkbox" class="toggle-checkbox"/>
 
 
 
 
13
  </label>
14
 
15
- <div class="wds-toggleable-inside wds-toggleable-inside-box">
16
- <div class="wds-table-fields wds-table-fields-stacked">
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
- <?php if ( apply_filters( 'wds-metabox-visible_parts-title_area', true ) ) : ?>
19
- <div class="label">
20
- <label class="wds-label" for="wds_title">
21
- <?php esc_html_e( 'SEO Title', 'wds' ); ?>
22
- <span><?php echo esc_html( sprintf( __( '- Include your focus keywords. 50-%d characters recommended.', 'wds' ), SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT ) ); ?></span>
23
- </label>
24
- </div>
25
- <div class="fields">
26
- <input type='text'
27
- id='wds_title'
28
- name='wds_title'
29
- value='<?php echo esc_html( smartcrawl_get_value( 'title', $post_id ) ); ?>'
30
- class='wds wds-meta-field'/>
31
- </div>
32
- <?php endif; ?>
33
 
34
- <?php if ( apply_filters( 'wds-metabox-visible_parts-description_area', true ) ) : ?>
35
- <div class="label">
36
- <label class="wds-label" for="wds_metadesc">
37
- <?php esc_html_e( 'Description', 'wds' ); ?>
38
- <span><?php echo esc_html( sprintf( __( '- Recommended minimum of 135 characters, maximum %d.', 'wds' ), SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT ) ); ?></span>
39
- </label>
40
- </div>
41
- <div class="fields">
42
- <textarea rows='2'
43
- name='wds_metadesc'
44
- id='wds_metadesc'
45
- class='wds wds-meta-field'><?php echo esc_html( smartcrawl_get_value( 'metadesc', $post_id ) ); ?></textarea>
46
- </div>
47
- <?php endif; ?>
48
 
49
- <?php if ( apply_filters( 'wds-metabox-visible_parts-keywords_area', true ) ) : ?>
50
- <div class="label">
51
- <label class="wds-label" for="wds_keywords">
52
- <?php esc_html_e( 'Keywords', 'wds' ); ?>
53
  <span><?php esc_html_e( '- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore.', 'wds' ); ?></span>
54
  </label>
55
- </div>
56
- <div class="fields">
57
  <input type='text'
58
- id='wds_keywords'
59
- name='wds_keywords'
60
- value='<?php echo esc_html( smartcrawl_get_value( 'keywords', $post_id ) ); ?>'
61
- class='wds'/>
62
  </div>
63
 
64
- <div class="wds-extra-keyword-options">
65
- <div class="label">
66
- <label class="wds-label" for="wds_news_keywords">
67
- <?php esc_html_e( 'News Keywords', 'wds' ); ?>
68
- <span><?php esc_html_e( '- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore.', 'wds' ); ?></span>
69
- </label>
70
- </div>
71
- <div class="fields">
72
- <input type='text'
73
- id='wds_news_keywords'
74
- name='wds_news_keywords'
75
- value='<?php echo esc_attr( smartcrawl_get_value( 'news_keywords', $post_id ) ); ?>'
76
- class='wds'/>
77
- </div>
78
-
79
- <div class="wds-tags-as-keyword">
80
- <?php
81
- $this->_render( 'toggle-item', array(
82
- 'field_name' => 'wds_tags_to_keywords',
83
- 'checked' => smartcrawl_get_value( 'tags_to_keywords', $post_id ) ? 'checked="checked"' : '',
84
- 'item_label' => esc_html__( 'Tags As Keywords' ),
85
- 'item_description' => esc_html__( 'If you enable using tags, post tags will be merged in with any other keywords you enter in the text box.' ),
86
- ) );
87
- ?>
88
- </div>
89
  </div>
90
- <?php endif; ?>
91
- </div>
92
  </div>
93
  </div>
8
  ?>
9
  <div class="wds-toggleable inactive wds-edit-meta-toggleable">
10
  <label>
11
+ <a class="sui-button sui-button-ghost">
12
+ <i class="sui-icon-pencil" aria-hidden="true"></i>
13
+
14
+ <?php esc_html_e( 'Edit Meta', 'wds' ); ?>
15
+ </a>
16
+ <input type="checkbox" class="hidden"/>
17
  </label>
18
 
19
+ <div class="wds-toggleable-inside sui-border-frame">
20
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-title_area', true ) ) : ?>
21
+ <div class="sui-form-field">
22
+ <label class="sui-label" for="wds_title">
23
+ <?php esc_html_e( 'SEO Title', 'wds' ); ?>
24
+ <span><?php echo esc_html( sprintf( __( '- Include your focus keywords. 50-%d characters recommended.', 'wds' ), SMARTCRAWL_TITLE_LENGTH_CHAR_COUNT_LIMIT ) ); ?></span>
25
+ </label>
26
+ <input type='text'
27
+ id='wds_title'
28
+ name='wds_title'
29
+ value='<?php echo esc_html( smartcrawl_get_value( 'title', $post_id ) ); ?>'
30
+ class='sui-form-control wds-meta-field'/>
31
+ </div>
32
+ <?php endif; ?>
33
 
34
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-description_area', true ) ) : ?>
35
+ <div class="sui-form-field">
36
+ <label class="sui-label" for="wds_metadesc">
37
+ <?php esc_html_e( 'Description', 'wds' ); ?>
38
+ <span><?php echo esc_html( sprintf( __( '- Recommended minimum of 135 characters, maximum %d.', 'wds' ), SMARTCRAWL_METADESC_LENGTH_CHAR_COUNT_LIMIT ) ); ?></span>
39
+ </label>
40
+ <textarea rows='2'
41
+ name='wds_metadesc'
42
+ id='wds_metadesc'
43
+ class='sui-form-control wds-meta-field'><?php echo esc_textarea( smartcrawl_get_value( 'metadesc', $post_id ) ); ?></textarea>
44
+ </div>
45
+ <?php endif; ?>
 
 
 
46
 
47
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-keywords_area', true ) ) : ?>
48
+ <div class="sui-form-field">
49
+ <label class="sui-label" for="wds_keywords">
50
+ <?php esc_html_e( 'Keywords', 'wds' ); ?>
51
+ <span><?php esc_html_e( '- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore.', 'wds' ); ?></span>
52
+ </label>
53
+ <input type='text'
54
+ id='wds_keywords'
55
+ name='wds_keywords'
56
+ value='<?php echo esc_html( smartcrawl_get_value( 'keywords', $post_id ) ); ?>'
57
+ class='sui-form-control'/>
58
+ </div>
 
 
59
 
60
+ <div class="wds-extra-keyword-options">
61
+ <div class="sui-form-field">
62
+ <label class="sui-label" for="wds_news_keywords">
63
+ <?php esc_html_e( 'News Keywords', 'wds' ); ?>
64
  <span><?php esc_html_e( '- Try to avoid stop words like ‘and’ and ‘the’ which search engines ignore.', 'wds' ); ?></span>
65
  </label>
 
 
66
  <input type='text'
67
+ id='wds_news_keywords'
68
+ name='wds_news_keywords'
69
+ value='<?php echo esc_attr( smartcrawl_get_value( 'news_keywords', $post_id ) ); ?>'
70
+ class='sui-form-control'/>
71
  </div>
72
 
73
+ <div class="wds-tags-as-keyword">
74
+ <?php
75
+ $this->_render( 'toggle-item', array(
76
+ 'field_name' => 'wds_tags_to_keywords',
77
+ 'checked' => smartcrawl_get_value( 'tags_to_keywords', $post_id ) ? 'checked="checked"' : '',
78
+ 'item_label' => esc_html__( 'Tags As Keywords' ),
79
+ 'item_description' => esc_html__( 'If you enable using tags, post tags will be merged in with any other keywords you enter in the text box.' ),
80
+ ) );
81
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  </div>
83
+ </div>
84
+ <?php endif; ?>
85
  </div>
86
  </div>
includes/admin/templates/metabox/metabox-preview.php CHANGED
@@ -14,12 +14,12 @@ $post_parent = wp_is_post_revision( $post->ID );
14
  $link = empty( $post_parent ) ? get_permalink( $post->ID ) : get_permalink( $post_parent );
15
  $resolver = Smartcrawl_Endpoint_Resolver::resolve();
16
  $resolver->simulate_post( $post->ID );
17
- $title = Smartcrawl_OnPage::get()->get_title();
18
- $description = Smartcrawl_OnPage::get()->get_description();
19
  $resolver->stop_simulation();
20
  ?>
21
  <div class="wds-metabox-preview">
22
- <label class="wds-label"><?php esc_html_e( 'Google Preview' ); ?></label>
23
 
24
  <?php
25
  if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
14
  $link = empty( $post_parent ) ? get_permalink( $post->ID ) : get_permalink( $post_parent );
15
  $resolver = Smartcrawl_Endpoint_Resolver::resolve();
16
  $resolver->simulate_post( $post->ID );
17
+ $title = Smartcrawl_Meta_Value_Helper::get()->get_title();
18
+ $description = Smartcrawl_Meta_Value_Helper::get()->get_description();
19
  $resolver->stop_simulation();
20
  ?>
21
  <div class="wds-metabox-preview">
22
+ <label class="sui-label"><?php esc_html_e( 'Google Preview' ); ?></label>
23
 
24
  <?php
25
  if ( apply_filters( 'wds-metabox-visible_parts-preview_area', true ) ) {
includes/admin/templates/metabox/metabox-readability-report-inner.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $accordion_item_classes = empty( $accordion_item_classes ) ? '' : $accordion_item_classes;
3
+ $readability_ignored = empty( $readability_ignored ) ? false : $readability_ignored;
4
+ $icon_class = empty( $icon_class ) ? '' : $icon_class;
5
+ $tag_class = empty( $tag_class ) ? '' : $tag_class;
6
+ $readability_level = empty( $readability_level ) ? '' : $readability_level;
7
+ $readability_levels_map = empty( $readability_levels_map ) ? array() : $readability_levels_map;
8
+ ?>
9
+
10
+ <div class="wds-report-inner">
11
+ <div class="wds-accordion sui-accordion">
12
+ <div class="wds-check-item sui-accordion-item <?php echo esc_attr( $accordion_item_classes ); ?>">
13
+ <div class="<?php echo $readability_ignored ? 'wds-ignored-item-header' : 'sui-accordion-item-header'; ?>">
14
+ <div class="sui-accordion-item-title sui-accordion-col-8">
15
+ <i aria-hidden="true" class="<?php echo esc_attr( $icon_class ); ?>"></i>
16
+ <?php esc_html_e( 'Flesch-Kincaid Test', 'wds' ); ?>
17
+ </div>
18
+
19
+ <?php if ( $readability_ignored ) : ?>
20
+ <div class="sui-accordion-col-4">
21
+ <button type="button"
22
+ class="wds-unignore wds-disabled-during-request sui-button sui-button-ghost"
23
+ data-check_id="readability">
24
+ <span class="sui-loading-text">
25
+ <i class="sui-icon-undo" aria-hidden="true"></i>
26
+
27
+ <?php esc_html_e( 'Restore', 'wds' ); ?>
28
+ </span>
29
+
30
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
31
+ </button>
32
+ </div>
33
+ <?php else : ?>
34
+ <div class="sui-accordion-col-4">
35
+ <span class="sui-tag <?php echo esc_attr( $tag_class ); ?>">
36
+ <?php echo esc_html( $readability_level ); ?>
37
+ </span>
38
+
39
+ <button class="sui-button-icon sui-accordion-open-indicator"
40
+ type="button"
41
+ aria-label="<?php esc_html_e( 'Open item', 'wds' ); ?>">
42
+ <i class="sui-icon-chevron-down" aria-hidden="true"></i>
43
+ </button>
44
+ </div>
45
+ <?php endif; ?>
46
+ </div>
47
+ <div class="sui-accordion-item-body">
48
+ <div class="sui-box">
49
+ <div class="sui-box-body">
50
+
51
+ <small><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></small>
52
+ <p>
53
+ <small><?php esc_html_e( 'The Flesch-Kincaid readability tests are readability tests designed to indicate how difficult a passage in English is to understand. Here are the benchmarks.', 'wds' ); ?></small>
54
+ </p>
55
+ <table class="sui-table">
56
+ <thead>
57
+ <tr>
58
+ <th><?php esc_html_e( 'Score', 'wds' ); ?></th>
59
+ <th><?php esc_html_e( 'Description', 'wds' ); ?></th>
60
+ </tr>
61
+ </thead>
62
+
63
+ <tbody>
64
+ <?php foreach ( $readability_levels_map as $label => $level ) : ?>
65
+ <tr>
66
+ <?php
67
+ if ( ! is_array( $level ) || ! isset( $level['max'] ) || ! isset( $level['min'] ) ) {
68
+ continue;
69
+ }
70
+ ?>
71
+ <td><?php echo esc_html( (int) ceil( $level['min'] ) ); ?>
72
+ - <?php echo esc_html( (int) ceil( $level['max'] ) ); ?></td>
73
+ <td><?php echo esc_html( $label ); ?></td>
74
+ </tr>
75
+ <?php endforeach; ?>
76
+ </tbody>
77
+ </table>
78
+
79
+ <small><strong><?php esc_html_e( 'How to fix', 'wds' ); ?></strong></small>
80
+ <p>
81
+ <small><?php esc_html_e( 'Try to use shorter sentences, with less difficult words to improve readability.', 'wds' ); ?></small>
82
+ </p>
83
+
84
+ <div class="wds-ignore-container">
85
+ <button type="button"
86
+ class="wds-ignore wds-disabled-during-request sui-button sui-button-ghost"
87
+ data-check_id="readability">
88
+ <span class="sui-loading-text">
89
+ <i class="sui-icon-eye-hide" aria-hidden="true"></i>
90
+
91
+ <?php esc_html_e( 'Ignore', 'wds' ); ?>
92
+ </span>
93
+
94
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
95
+ </button>
96
+
97
+ <span><small><?php esc_html_e( 'This will ignore warnings for this particular post.', 'wds' ); ?></small></span>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ </div>
includes/admin/templates/metabox/metabox-readability.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $post = empty( $post ) ? null : $post;
3
+
4
+ if ( ! $post ) {
5
+ return false;
6
+ }
7
+ ?>
8
+ <div class="wds-readability-analysis-container">
9
+ <?php do_action( 'wds-editor-metabox-readability-analysis', $post ); ?>
10
+ </div>
includes/admin/templates/metabox/metabox-seo-analysis-container.php CHANGED
@@ -8,43 +8,48 @@ if ( $post ) {
8
  }
9
  ?>
10
 
11
- <div class="wds-seo-analysis-container">
12
- <div class="cf wds-seo-analysis-label">
13
- <label class="wds-label"><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></label>
 
14
 
15
- <button <?php esc_attr( $refresh_button_disabled ); ?>
16
- class="button button-small button-dark button-dark-o wds-refresh-analysis wds-analysis-seo wds-disabled-during-request"
17
- type="button">
18
- <span><?php esc_html_e( 'Refresh', 'wds' ); ?></span>
19
- </button>
20
- </div>
 
 
 
 
 
 
21
 
22
- <?php
23
- $this->_render( 'mascot-message', array(
24
- 'key' => 'metabox-seo-analysis',
25
- 'message' => esc_html__( 'This tool helps you optimize your content to give it the best chance of being found in search engines when people are looking for it. Start by choosing a few focus keywords that best describe your article, then SmartCrawl will give you recommendations to make sure your content is highly optimized.', 'wds' ),
26
- ) );
27
- ?>
 
 
28
 
29
- <?php if ( apply_filters( 'wds-metabox-visible_parts-focus_area', true ) ) : ?>
30
- <div class="wds-focus-keyword wds-table-fields wds-table-fields-stacked">
31
- <div class="label">
32
- <label class="wds-label" for='wds_focus'>
33
  <?php esc_html_e( 'Focus keyword', 'wds' ); ?>
34
  <span><?php esc_html_e( '- Choose a single word, phrase or part of a sentence that people will likely search for.', 'wds' ); ?></span>
35
  </label>
36
- </div>
37
- <div class="fields">
38
  <input type='text'
39
  id='wds_focus'
40
  name='wds_focus'
41
  value='<?php echo esc_html( smartcrawl_get_value( 'focus-keywords', $post_id ) ); ?>'
42
- class='wds wds-disabled-during-request'
43
  placeholder="<?php esc_html_e( 'E.g. broken iphone screen', 'wds' ); ?>"/>
44
  </div>
45
- </div>
46
- <?php endif; ?>
47
 
48
- <a href="#reload"><?php esc_html_e( 'Reload', 'wds' ); ?></a>
49
- <?php do_action( 'wds-editor-metabox-seo-analysis', $post ); ?>
50
  </div>
8
  }
9
  ?>
10
 
11
+ <div class="wds-metabox-section">
12
+ <div class="wds-seo-analysis-container">
13
+ <div class="wds-seo-analysis-label">
14
+ <strong><?php esc_html_e( 'SEO Analysis', 'wds' ); ?></strong>
15
 
16
+ <button <?php esc_attr( $refresh_button_disabled ); ?>
17
+ class="sui-button sui-button-ghost wds-refresh-analysis wds-analysis-seo wds-disabled-during-request"
18
+ type="button">
19
+ <span class="sui-loading-text">
20
+ <i class="sui-icon-update" aria-hidden="true"></i>
21
+
22
+ <?php esc_html_e( 'Refresh', 'wds' ); ?>
23
+ </span>
24
+
25
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
26
+ </button>
27
+ </div>
28
 
29
+ <div class="sui-box-body">
30
+ <?php
31
+ $this->_render( 'mascot-message', array(
32
+ 'key' => 'metabox-seo-analysis',
33
+ 'message' => esc_html__( 'This tool helps you optimize your content to give it the best chance of being found in search engines when people are looking for it. Start by choosing a few focus keywords that best describe your article, then SmartCrawl will give you recommendations to make sure your content is highly optimized.', 'wds' ),
34
+ ) );
35
+ ?>
36
+ </div>
37
 
38
+ <?php if ( apply_filters( 'wds-metabox-visible_parts-focus_area', true ) ) : ?>
39
+ <div class="wds-focus-keyword sui-border-frame sui-form-field">
40
+ <label class="sui-label" for='wds_focus'>
 
41
  <?php esc_html_e( 'Focus keyword', 'wds' ); ?>
42
  <span><?php esc_html_e( '- Choose a single word, phrase or part of a sentence that people will likely search for.', 'wds' ); ?></span>
43
  </label>
 
 
44
  <input type='text'
45
  id='wds_focus'
46
  name='wds_focus'
47
  value='<?php echo esc_html( smartcrawl_get_value( 'focus-keywords', $post_id ) ); ?>'
48
+ class='wds-disabled-during-request sui-form-control'
49
  placeholder="<?php esc_html_e( 'E.g. broken iphone screen', 'wds' ); ?>"/>
50
  </div>
51
+ <?php endif; ?>
 
52
 
53
+ <?php do_action( 'wds-editor-metabox-seo-analysis', $post ); ?>
54
+ </div>
55
  </div>
includes/admin/templates/metabox/metabox-seo-meta.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php $post = empty( $post ) ? null : $post; ?>
2
+ <div class="wds-metabox-section">
3
+ <?php
4
+ $this->_render( 'metabox/metabox-dummy-preview' );
5
+ ?>
6
+
7
+ <?php $this->_render( 'metabox/metabox-meta-edit-form', array(
8
+ 'post' => $post,
9
+ ) ); ?>
10
+ </div>
includes/admin/templates/metabox/metabox-social-meta-tags.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
- $post = empty( $post ) ? null : $post;
3
  $main_title = empty( $main_title ) ? '' : $main_title;
4
  $main_description = empty( $main_description ) ? '' : $main_description;
5
  $field_name = empty( $field_name ) ? '' : $field_name;
@@ -11,80 +10,75 @@ $description_placeholder = empty( $description_placeholder ) ? '' : $description
11
  $images = empty( $images ) ? array() : $images;
12
  $images_available = ! empty( $images ) && is_array( $images );
13
  $single_image = empty( $single_image ) ? false : true;
 
 
14
  ?>
15
- <div class="wds-table-fields-group wds-separator-top">
16
- <div class="wds-table-fields">
17
- <div class="label">
18
- <label class="wds-label"><?php echo esc_html( $main_title ); ?></label>
19
- <p class="wds-label-description"><?php echo esc_html( $main_description ); ?></p>
20
- </div>
21
- <div class="fields">
22
- <div class="wds-toggleable inverted <?php echo $disabled ? 'inactive' : ''; ?>">
23
- <?php
24
- $this->_render( 'toggle-item', array(
25
- 'inverted' => true,
26
- 'field_name' => $field_name . '[disabled]',
27
- 'field_id' => $field_name . '-disabled',
28
- 'checked' => checked( $disabled, true, false ),
29
- 'item_label' => esc_html__( 'Enable for this post', 'wds' ),
30
- ) );
31
- ?>
32
- <div
33
- class="wds-toggleable-inside wds-toggleable-inside-box wds-table-fields-group <?php echo esc_attr( $field_name ); ?>-meta">
34
- <div class="wds-table-fields wds-table-fields-stacked">
35
- <div class="label">
36
- <label for="<?php echo esc_attr( $field_name ); ?>-title"
37
- class="wds-label"><?php esc_html_e( 'Title', 'wds' ); ?></label>
38
- </div>
39
- <div class="fields">
40
- <input type="text"
41
- id="<?php echo esc_attr( $field_name ); ?>-title"
42
- name="<?php echo esc_attr( $field_name ); ?>[title]"
43
- placeholder="<?php echo esc_attr( smartcrawl_replace_vars( $title_placeholder, $post ) ); ?>"
44
- value="<?php echo esc_attr( $current_title ); ?>"/>
45
- </div>
46
- </div>
47
 
48
- <div class="wds-table-fields wds-table-fields-stacked">
49
- <div class="label">
50
- <label for="<?php echo esc_attr( $field_name ); ?>-description" class="wds-label">
51
- <?php esc_html_e( 'Description', 'wds' ); ?>
52
- </label>
53
- </div>
54
- <div class="fields">
55
- <textarea name="<?php echo esc_attr( $field_name ); ?>[description]"
56
- placeholder="<?php echo esc_attr( smartcrawl_replace_vars( $description_placeholder, $post ) ); ?>"
57
- id="<?php echo esc_attr( $field_name ); ?>-description"><?php echo esc_textarea( $current_description ); ?></textarea>
58
- </div>
59
- </div>
60
 
61
- <div class="wds-table-fields wds-table-fields-stacked">
62
- <div class="label">
63
- <label for="<?php echo esc_attr( $field_name ); ?>-images" class="wds-label">
64
- <?php echo $single_image ? esc_html__( 'Featured Image', 'wds' ) : esc_html__( 'Featured Images', 'wds' ); ?>
65
- </label>
66
- </div>
67
- <div class="fields og-images"
68
- data-singular="<?php echo $single_image ? 'true' : 'false'; ?>"
69
- data-name="<?php echo esc_attr( $field_name ); ?>[images]">
70
- <div class="add-action-wrapper item"
71
- style="<?php echo $single_image && $images_available ? 'display:none;' : ''; ?>">
72
- <a id="<?php echo esc_attr( $field_name ); ?>-images" href="#add" title="<?php esc_attr_e( 'Add image', 'wds' ); ?>">
73
- <i class="wds-icon-plus"></i>
74
- </a>
75
- </div>
76
- <?php if ( $images_available ) : ?>
77
- <?php foreach ( $images as $img ) : ?>
78
- <input type="text" class="widefat"
79
- name="<?php echo esc_attr( $field_name ); ?>[images][]"
80
- value="<?php echo esc_attr( $img ); ?>"/>
81
- <?php endforeach; ?>
82
- <?php endif; ?>
83
  </div>
 
 
 
 
 
 
 
84
  </div>
85
 
86
- <p class="wds-label-description">
87
- <?php if ( $single_image ): ?>
 
 
88
  <?php esc_html_e( 'This image will be used as the featured image when the post is shared.', 'wds' ); ?>
89
  <?php else: ?>
90
  <?php esc_html_e( 'Each of these images will be available to use as the featured image when the post is shared.', 'wds' ); ?>
1
  <?php
 
2
  $main_title = empty( $main_title ) ? '' : $main_title;
3
  $main_description = empty( $main_description ) ? '' : $main_description;
4
  $field_name = empty( $field_name ) ? '' : $field_name;
10
  $images = empty( $images ) ? array() : $images;
11
  $images_available = ! empty( $images ) && is_array( $images );
12
  $single_image = empty( $single_image ) ? false : true;
13
+ $images_description = empty( $images_description ) ? false : $images_description;
14
+ $toggle_label = empty( $toggle_label ) ? esc_html__( 'Enable for this post', 'wds' ) : $toggle_label;
15
  ?>
16
+ <div class="sui-box-settings-row">
17
+ <div class="sui-box-settings-col-1">
18
+ <label class="sui-settings-label"><?php echo esc_html( $main_title ); ?></label>
19
+ <p class="sui-description"><?php echo esc_html( $main_description ); ?></p>
20
+ </div>
21
+ <div class="sui-box-settings-col-2">
22
+ <div class="wds-toggleable inverted <?php echo $disabled ? 'inactive' : ''; ?>">
23
+ <?php
24
+ $this->_render( 'toggle-item', array(
25
+ 'inverted' => true,
26
+ 'field_name' => $field_name . '[disabled]',
27
+ 'field_id' => $field_name . '-disabled',
28
+ 'checked' => checked( $disabled, true, false ),
29
+ 'item_label' => $toggle_label,
30
+ ) );
31
+ ?>
32
+ <div class="wds-toggleable-inside sui-border-frame sui-toggle-content <?php echo esc_attr( $field_name ); ?>-meta">
33
+ <div class="sui-form-field">
34
+ <label for="<?php echo esc_attr( $field_name ); ?>-title"
35
+ class="sui-label"><?php esc_html_e( 'Title', 'wds' ); ?></label>
36
+ <input type="text"
37
+ class="sui-form-control"
38
+ id="<?php echo esc_attr( $field_name ); ?>-title"
39
+ name="<?php echo esc_attr( $field_name ); ?>[title]"
40
+ placeholder="<?php echo esc_attr( $title_placeholder ); ?>"
41
+ value="<?php echo esc_attr( $current_title ); ?>"/>
42
+ </div>
 
 
 
 
 
43
 
44
+ <div class="sui-form-field">
45
+ <label for="<?php echo esc_attr( $field_name ); ?>-description" class="sui-label">
46
+ <?php esc_html_e( 'Description', 'wds' ); ?>
47
+ </label>
48
+ <textarea name="<?php echo esc_attr( $field_name ); ?>[description]"
49
+ class="sui-form-control"
50
+ placeholder="<?php echo esc_attr( $description_placeholder ); ?>"
51
+ id="<?php echo esc_attr( $field_name ); ?>-description"><?php echo esc_textarea( $current_description ); ?></textarea>
52
+ </div>
 
 
 
53
 
54
+ <div class="sui-form-field">
55
+ <label for="<?php echo esc_attr( $field_name ); ?>-images" class="sui-label">
56
+ <?php echo $single_image ? esc_html__( 'Featured Image', 'wds' ) : esc_html__( 'Featured Images', 'wds' ); ?>
57
+ </label>
58
+ <div class="og-images"
59
+ data-singular="<?php echo $single_image ? 'true' : 'false'; ?>"
60
+ data-name="<?php echo esc_attr( $field_name ); ?>[images]">
61
+ <div class="add-action-wrapper sui-tooltip"
62
+ data-tooltip="<?php esc_attr_e( 'Add featured image', 'wds' ); ?>"
63
+ style="<?php echo $single_image && $images_available ? 'display:none;' : ''; ?>">
64
+ <a href="#add" id="<?php echo esc_attr( $field_name ); ?>-images"
65
+ title="<?php esc_attr_e( 'Add image', 'wds' ); ?>">
66
+ <i class="sui-icon-upload-cloud" aria-hidden="true"></i>
67
+ </a>
 
 
 
 
 
 
 
 
68
  </div>
69
+ <?php if ( $images_available ) : ?>
70
+ <?php foreach ( $images as $img ) : ?>
71
+ <input type="text"
72
+ name="<?php echo esc_attr( $field_name ); ?>[images][]"
73
+ value="<?php echo esc_attr( $img ); ?>"/>
74
+ <?php endforeach; ?>
75
+ <?php endif; ?>
76
  </div>
77
 
78
+ <p class="sui-description">
79
+ <?php if ( $images_description ): ?>
80
+ <?php echo esc_html( $images_description ); ?>
81
+ <?php elseif ( $single_image ): ?>
82
  <?php esc_html_e( 'This image will be used as the featured image when the post is shared.', 'wds' ); ?>
83
  <?php else: ?>
84
  <?php esc_html_e( 'Each of these images will be available to use as the featured image when the post is shared.', 'wds' ); ?>
includes/admin/templates/metabox/metabox-social-opengraph.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $post = empty( $post ) ? null : $post;
3
+
4
+ $resolver = Smartcrawl_Endpoint_Resolver::resolve();
5
+ $resolver->simulate_post( $post );
6
+
7
+ $og_helper = new Smartcrawl_OpenGraph_Value_Helper();
8
+ $og = smartcrawl_get_value( 'opengraph', $post->ID );
9
+ if ( ! is_array( $og ) ) {
10
+ $og = array();
11
+ }
12
+ $og = wp_parse_args( $og, array(
13
+ 'title' => false,
14
+ 'description' => false,
15
+ 'images' => false,
16
+ 'disabled' => false,
17
+ ) );
18
+
19
+ $this->_render( 'metabox/metabox-social-meta-tags', array(
20
+ 'main_title' => __( 'OpenGraph', 'wds' ),
21
+ 'main_description' => __( 'OpenGraph is used on many social networks such as Facebook.', 'wds' ),
22
+ 'field_name' => 'wds-opengraph',
23
+ 'disabled' => (bool) smartcrawl_get_array_value( $og, 'disabled' ),
24
+ 'current_title' => $og['title'],
25
+ 'title_placeholder' => $og_helper->get_title(),
26
+ 'current_description' => $og['description'],
27
+ 'description_placeholder' => $og_helper->get_description(),
28
+ 'images' => $og['images'],
29
+ 'single_image' => false,
30
+ ) );
31
+
32
+ $resolver->stop_simulation();
includes/admin/templates/metabox/metabox-social-twitter.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $post = empty( $post ) ? null : $post;
3
+
4
+ $resolver = Smartcrawl_Endpoint_Resolver::resolve();
5
+ $resolver->simulate_post( $post );
6
+
7
+ $twitter_printer = Smartcrawl_Twitter_Printer::get();
8
+ $twitter = smartcrawl_get_value( 'twitter', $post->ID );
9
+ if ( ! is_array( $twitter ) ) {
10
+ $twitter = array();
11
+ }
12
+ $twitter = wp_parse_args( $twitter, array(
13
+ 'title' => false,
14
+ 'description' => false,
15
+ 'images' => false,
16
+ 'disabled' => false,
17
+ ) );
18
+
19
+ $this->_render( 'metabox/metabox-social-meta-tags', array(
20
+ 'main_title' => __( 'Twitter', 'wds' ),
21
+ 'main_description' => __( 'These details will be used in Twitter cards.', 'wds' ),
22
+ 'field_name' => 'wds-twitter',
23
+ 'disabled' => (bool) smartcrawl_get_array_value( $twitter, 'disabled' ),
24
+ 'current_title' => $twitter['title'],
25
+ 'title_placeholder' => $twitter_printer->get_title_content(),
26
+ 'current_description' => $twitter['description'],
27
+ 'description_placeholder' => $twitter_printer->get_description_content(),
28
+ 'images' => $twitter['images'],
29
+ 'single_image' => true,
30
+ ) );
31
+
32
+ $resolver->stop_simulation();
includes/admin/templates/metabox/metabox-tab-advanced.php CHANGED
@@ -1,173 +1,14 @@
1
  <?php
2
- $robots_noindex_value = empty( $robots_noindex_value ) ? false : $robots_noindex_value;
3
- $robots_nofollow_value = empty( $robots_nofollow_value ) ? false : $robots_nofollow_value;
4
- $robots_index_value = empty( $robots_index_value ) ? false : true;
5
- $robots_follow_value = empty( $robots_follow_value ) ? false : true;
6
- $advanced_value = empty( $advanced_value ) ? array() : $advanced_value;
7
- $advanced_options = empty( $advanced_options ) ? array() : $advanced_options;
8
- $sitemap_priority_options = empty( $sitemap_priority_options ) ? array() : $sitemap_priority_options;
9
- $post_type_noindexed = empty( $post_type_noindexed ) ? false : true;
10
- $post_type_nofollowed = empty( $post_type_nofollowed ) ? false : true;
11
- $post = empty( $post ) ? null : $post;
12
- if ( $post ) {
13
- $post_id = $post->ID;
14
- } else {
15
  return;
16
  }
17
  ?>
18
 
19
- <div class="wds-metabox-section wds-advanced-metabox-section wds-form">
20
- <div class="wds-table-fields-group">
21
- <?php if ( apply_filters( 'wds-metabox-visible_parts-robots_area', true ) ) : ?>
22
- <div class="wds-table-fields">
23
- <div class="label">
24
- <label class="wds-label"><?php esc_html_e( 'Indexing', 'wds' ); ?></label>
25
- <p class="wds-label-description">
26
- <?php esc_html_e( 'Choose how search engines will index this particular page.', 'wds' ); ?>
27
- </p>
28
- </div>
29
- <div class="fields">
30
- <?php
31
- if ( $post_type_noindexed ) {
32
- $this->_render( 'toggle-item', array(
33
- 'field_name' => 'wds_meta-robots-index',
34
- 'field_id' => 'wds_meta-robots-index',
35
- 'checked' => $robots_index_value ? 'checked="checked"' : '',
36
- 'item_label' => esc_html__( 'Index - Override Post Type Setting', 'wds' ),
37
- 'item_description' => esc_html__( 'Instruct search engines whether or not you want this post to appear in search results.', 'wds' ),
38
- ) );
39
- } else {
40
- $this->_render( 'toggle-item', array(
41
- 'inverted' => true,
42
- 'field_name' => 'wds_meta-robots-noindex',
43
- 'field_id' => 'wds_meta-robots-noindex',
44
- 'checked' => $robots_noindex_value ? 'checked="checked"' : '',
45
- 'item_label' => esc_html__( 'Index', 'wds' ),
46
- 'item_description' => esc_html__( 'Instruct search engines whether or not you want this post to appear in search results.', 'wds' ),
47
- ) );
48
- }
49
 
50
- if ( $post_type_nofollowed ) {
51
- $this->_render( 'toggle-item', array(
52
- 'field_name' => 'wds_meta-robots-follow',
53
- 'field_id' => 'wds_meta-robots-follow',
54
- 'checked' => $robots_follow_value ? 'checked="checked"' : '',
55
- 'item_label' => esc_html__( 'Follow - Override Post Type Setting', 'wds' ),
56
- 'item_description' => esc_html__( 'Tells search engines whether or not to follow the links on your page and crawl them too.', 'wds' ),
57
- ) );
58
- } else {
59
- $this->_render( 'toggle-item', array(
60
- 'inverted' => true,
61
- 'field_name' => 'wds_meta-robots-nofollow',
62
- 'field_id' => 'wds_meta-robots-nofollow',
63
- 'checked' => $robots_nofollow_value ? 'checked="checked"' : '',
64
- 'item_label' => esc_html__( 'Follow', 'wds' ),
65
- 'item_description' => esc_html__( 'Tells search engines whether or not to follow the links on your page and crawl them too.', 'wds' ),
66
- ) );
67
- }
68
-
69
- $this->_render( 'toggle-item', array(
70
- 'inverted' => true,
71
- 'item_value' => 'noarchive',
72
- 'field_name' => 'wds_meta-robots-adv[noarchive]',
73
- 'field_id' => 'wds_meta-robots-noarchive',
74
- 'checked' => in_array( 'noarchive', $advanced_value, true ) ? 'checked="checked"' : '',
75
- 'item_label' => esc_html__( 'Archive', 'wds' ),
76
- 'item_description' => esc_html__( 'Instructs search engines to store a cached version of this page.', 'wds' ),
77
- ) );
78
-
79
- $this->_render( 'toggle-item', array(
80
- 'inverted' => true,
81
- 'item_value' => 'nosnippet',
82
- 'field_name' => 'wds_meta-robots-adv[nosnippet]',
83
- 'field_id' => 'wds_meta-robots-nosnippet',
84
- 'checked' => in_array( 'nosnippet', $advanced_value, true ) ? 'checked="checked"' : '',
85
- 'item_label' => esc_html__( 'Snippet', 'wds' ),
86
- 'item_description' => esc_html__( 'Allows search engines to show a snippet of this page in the search results and prevents them from caching the page.', 'wds' ),
87
- ) );
88
- ?>
89
- </div>
90
- </div>
91
- <?php endif; ?>
92
-
93
- <?php if ( apply_filters( 'wds-metabox-visible_parts-canonical_area', true ) ) : ?>
94
- <div class="wds-table-fields wds-separator-top">
95
- <div class="label">
96
- <label for="wds_canonical" class="wds-label"><?php esc_html_e( 'Canonical', 'wds' ); ?></label>
97
- <p class="wds-label-description">
98
- <?php esc_html_e( 'If you have several similar versions of this page you can point search engines to the canonical or "genuine" version to avoid duplicate content issues.', 'wds' ); ?>
99
- </p>
100
- </div>
101
- <div class="fields">
102
- <input type='text' id='wds_canonical' name='wds_canonical'
103
- value='<?php echo esc_attr( smartcrawl_get_value( 'canonical', $post_id ) ); ?>'
104
- class='wds'/>
105
- <span
106
- class="wds-field-legend"><?php esc_html_e( 'Enter the full canonical URL including http:// or https://', 'wds' ); ?></span>
107
- </div>
108
- </div>
109
- <?php endif; ?>
110
-
111
- <?php if ( apply_filters( 'wds-metabox-visible_parts-redirect_area', true ) && user_can_see_seo_metabox_301_redirect() ) : ?>
112
- <div class="wds-table-fields wds-separator-top">
113
- <div class="label">
114
- <label for="wds_redirect" class="wds-label"><?php esc_html_e( '301 Redirect', 'wds' ); ?></label>
115
- <p class="wds-label-description">
116
- <?php esc_html_e( 'Send visitors to this URL to another page.', 'wds' ); ?>
117
- </p>
118
- </div>
119
- <div class="fields">
120
- <input type='text' id='wds_redirect' name='wds_redirect'
121
- value='<?php echo esc_attr( smartcrawl_get_value( 'redirect', $post_id ) ); ?>' class='wds'/>
122
- <span
123
- class="wds-field-legend"><?php esc_html_e( 'Enter the URL to send traffic to including http:// or https://', 'wds' ); ?></span>
124
- </div>
125
- </div>
126
- <?php endif; ?>
127
-
128
- <?php if ( apply_filters( 'wds-metabox-visible_parts-sitemap_priority_area', true ) ) : ?>
129
- <div class="wds-table-fields wds-separator-top">
130
- <div class="label">
131
- <label for='wds_sitemap-priority'
132
- class="wds-label"><?php esc_html_e( 'Sitemap Priority', 'wds' ); ?></label>
133
- </div>
134
- <div class="fields">
135
- <select name='wds_sitemap-priority'
136
- id='wds_sitemap-priority'
137
- class="select-container"
138
- style="width: 100%">
139
-
140
- <?php $priority_value = smartcrawl_get_value( 'sitemap-priority', $post_id ); ?>
141
-
142
- <?php foreach ( $sitemap_priority_options as $key => $label ) : ?>
143
- <option value='<?php echo esc_attr( $key ); ?>' <?php selected( $key, $priority_value ); ?>>
144
- <?php echo esc_html( $label ); ?>
145
- </option>
146
- <?php endforeach; ?>
147
- </select>
148
- </div>
149
- </div>
150
- <?php endif; ?>
151
-
152
- <div class="wds-table-fields wds-separator-top">
153
- <div class="label">
154
- <label class="wds-label" for="wds_autolinks-exclude">
155
- <?php esc_html_e( 'Automatic Linking', 'wds' ); ?>
156
- </label>
157
- <p class="wds-label-description">
158
- <?php esc_html_e( 'You can prevent this particular post from being auto-linked', 'wds' ); ?>
159
- </p>
160
- </div>
161
- <div class="fields">
162
- <?php
163
- $this->_render( 'toggle-item', array(
164
- 'inverted' => true,
165
- 'field_name' => 'wds_autolinks-exclude',
166
- 'checked' => smartcrawl_get_value( 'autolinks-exclude', $post_id ) ? 'checked="checked"' : '',
167
- 'item_label' => esc_html__( 'Enable automatic linking for this post', 'wds' ),
168
- ) );
169
- ?>
170
- </div>
171
- </div>
172
- </div>
173
  </div>
1
  <?php
2
+ $advanced_sections = empty( $advanced_sections ) ? array() : $advanced_sections;
3
+ if ( empty( $advanced_sections ) ) {
 
 
 
 
 
 
 
 
 
 
 
4
  return;
5
  }
6
  ?>
7
 
8
+ <div class="wds-metabox-section wds-advanced-metabox-section sui-box-body">
9
+ <p><?php esc_html_e( 'Configure the advanced settings for this post.', 'wds' ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
+ <?php foreach ( $advanced_sections as $template => $args ) {
12
+ $this->_render( $template, $args );
13
+ } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  </div>
includes/admin/templates/metabox/metabox-tab-readability.php CHANGED
@@ -1,15 +1,14 @@
1
- <?php if ( ! Smartcrawl_Settings::get_setting( 'analysis-readability' ) ) {
 
2
  return false;
3
- } ?>
 
4
  <div class="wds-metabox-section">
5
- <p><?php esc_html_e( 'We’ve analyzed your content to see how readable it is for the average person. Suggestions are based on best practice, but only you can decide what works for you and your readers.', 'wds' ); ?></p>
6
- <a href="#reload"><?php esc_html_e( 'Reload', 'wds' ); ?></a>
7
-
8
- <p class="wds-readability-legend wds-small-text">
9
- <span><strong><?php esc_html_e( 'Difficult', 'wds' ); ?></strong> <?php esc_html_e( '= Less than 60', 'wds' ); ?></span>
10
- <span><strong><?php esc_html_e( 'OK', 'wds' ); ?></strong> <?php esc_html_e( '= 60 to 70', 'wds' ); ?></span>
11
- <span><strong><?php esc_html_e( 'Easy', 'wds' ); ?></strong> <?php esc_html_e( '= 70+', 'wds' ); ?></span>
12
  </p>
13
 
14
- <?php do_action( 'wds-editor-metabox-readability-analysis', $post ); ?>
 
 
15
  </div>
1
+ <?php
2
+ if ( empty( $readability_sections ) ) {
3
  return false;
4
+ }
5
+ ?>
6
  <div class="wds-metabox-section">
7
+ <p>
8
+ <small><?php esc_html_e( 'We’ve analyzed your content to see how readable it is for the average person. Suggestions are based on best practice, but only you can decide what works for you and your readers.', 'wds' ); ?></small>
 
 
 
 
 
9
  </p>
10
 
11
+ <?php foreach ( $readability_sections as $template => $args ) {
12
+ $this->_render( $template, $args );
13
+ } ?>
14
  </div>
includes/admin/templates/metabox/metabox-tab-seo.php CHANGED
@@ -1,25 +1,12 @@
1
  <?php
2
- $post = empty( $post ) ? null : $post;
 
 
 
3
  ?>
4
 
5
  <div class="wds-form">
6
- <div class="wds-metabox-section">
7
- <?php
8
- $this->_render( 'metabox/metabox-dummy-preview' );
9
- ?>
10
-
11
- <?php $this->_render( 'metabox/metabox-meta-edit-form', array(
12
- 'post' => $post,
13
- ) ); ?>
14
- </div>
15
-
16
- <?php if ( Smartcrawl_Settings::get_setting( 'analysis-seo' ) ) { ?>
17
- <div class="wds-metabox-section">
18
- <?php
19
- $this->_render( 'metabox/metabox-seo-analysis-container', array(
20
- 'post' => $post,
21
- ) );
22
- ?>
23
- </div>
24
- <?php } ?>
25
  </div>
1
  <?php
2
+ $seo_sections = empty( $seo_sections ) ? array() : $seo_sections;
3
+ if ( empty( $seo_sections ) ) {
4
+ return;
5
+ }
6
  ?>
7
 
8
  <div class="wds-form">
9
+ <?php foreach ( $seo_sections as $template => $args ) {
10
+ $this->_render( $template, $args );
11
+ } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  </div>
includes/admin/templates/metabox/metabox-tab-social.php CHANGED
@@ -1,102 +1,18 @@
1
  <?php
2
- $post = empty( $post ) ? null : $post;
3
- $og_setting_enabled = empty( $og_setting_enabled ) ? false : $og_setting_enabled;
4
- $og_post_type_enabled = empty( $og_post_type_enabled ) ? false : $og_post_type_enabled;
5
- $twitter_setting_enabled = empty( $twitter_setting_enabled ) ? false : $twitter_setting_enabled;
6
- $twitter_post_type_enabled = empty( $twitter_post_type_enabled ) ? false : $twitter_post_type_enabled;
7
- $onpage_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_ONPAGE );
8
-
9
- if ( $post ) {
10
- $post_id = $post->ID;
11
- } else {
12
  return;
13
  }
14
-
15
- $og = smartcrawl_get_value( 'opengraph', $post_id );
16
- if ( ! is_array( $og ) ) {
17
- $og = array();
18
- }
19
-
20
- $og = wp_parse_args( $og, array(
21
- 'title' => false,
22
- 'description' => false,
23
- 'images' => false,
24
- 'disabled' => false,
25
- ) );
26
-
27
- $resolver = Smartcrawl_Endpoint_Resolver::resolve();
28
- $resolver->simulate_post( $post );
29
- $og_helper = new Smartcrawl_OpenGraph_Value_Helper();
30
- $title_placeholder = $og_helper->get_title();
31
- $description_placeholder = $og_helper->get_description();
32
- $og_meta_disabled = (bool) smartcrawl_get_array_value( $og, 'disabled' );
33
-
34
- $twitter = smartcrawl_get_value( 'twitter', $post_id );
35
- if ( ! is_array( $twitter ) ) {
36
- $twitter = array();
37
- }
38
-
39
- $twitter = wp_parse_args( $twitter, array(
40
- 'title' => false,
41
- 'description' => false,
42
- 'images' => false,
43
- 'disabled' => false,
44
- ) );
45
-
46
- $twitter_printer = Smartcrawl_Twitter_Printer::get();
47
- $twitter_meta_disabled = smartcrawl_get_array_value( $twitter, 'disabled' );
48
-
49
  ?>
50
- <div class="wds-metabox-section wds-social-settings-metabox-section wds-form">
51
- <p>
52
- <?php
53
- printf(
54
- esc_html__( "Customize this posts title, description and featured images for social shares. You can also configure the default settings for this post type in SmartCrawl's %s area.", 'wds' ),
55
- sprintf(
56
- '<a href="%s">%s</a>',
57
- esc_url_raw( $onpage_url ),
58
- esc_html__( 'Titles & Meta', 'wds' )
59
- )
60
- );
61
- ?>
62
- </p>
63
- <?php if ( $og_setting_enabled && $og_post_type_enabled ) : ?>
64
- <?php
65
- $this->_render( 'metabox/metabox-social-meta-tags', array(
66
- 'post' => $post,
67
- 'main_title' => __( 'OpenGraph', 'wds' ),
68
- 'main_description' => __( 'OpenGraph is used on many social networks such as Facebook.', 'wds' ),
69
- 'field_name' => 'wds-opengraph',
70
- 'disabled' => $og_meta_disabled,
71
- 'current_title' => $og['title'],
72
- 'title_placeholder' => $title_placeholder,
73
- 'current_description' => $og['description'],
74
- 'description_placeholder' => $description_placeholder,
75
- 'images' => $og['images'],
76
- 'single_image' => false,
77
- ) );
78
- ?>
79
- <?php endif; ?>
80
-
81
- <?php if ( $twitter_setting_enabled && $twitter_post_type_enabled ) : ?>
82
- <?php
83
- $this->_render( 'metabox/metabox-social-meta-tags', array(
84
- 'post' => $post,
85
- 'main_title' => __( 'Twitter', 'wds' ),
86
- 'main_description' => __( 'These details will be used in Twitter cards.', 'wds' ),
87
- 'field_name' => 'wds-twitter',
88
- 'disabled' => $twitter_meta_disabled,
89
- 'current_title' => $twitter['title'],
90
- 'title_placeholder' => $twitter_printer->get_title_content(),
91
- 'current_description' => $twitter['description'],
92
- 'description_placeholder' => $twitter_printer->get_description_content(),
93
- 'images' => $twitter['images'],
94
- 'single_image' => true,
95
- ) );
96
- ?>
97
- <?php endif; ?>
98
 
99
- <?php
100
- $resolver->stop_simulation();
101
- ?>
102
  </div>
1
  <?php
2
+ $default_settings_message = smartcrawl_format_link(
3
+ esc_html__( "Customize this posts title, description and featured images for social shares. You can also configure the default settings for this post type in SmartCrawl's %s area.", 'wds' ),
4
+ Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_ONPAGE ),
5
+ esc_html__( 'Titles & Meta', 'wds' )
6
+ );
7
+ $social_sections = empty( $social_sections ) ? array() : $social_sections;
8
+ if ( empty( $social_sections ) ) {
 
 
 
9
  return;
10
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  ?>
12
+ <div class="wds-metabox-section wds-social-settings-metabox-section sui-box-body">
13
+ <p><?php echo wp_kses_post( $default_settings_message ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
+ <?php foreach ( $social_sections as $template => $args ) {
16
+ $this->_render( $template, $args );
17
+ } ?>
18
  </div>
includes/admin/templates/modal.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = empty( $id ) ? '' : $id;
3
+ $title = empty( $title ) ? '' : $title;
4
+ $description = empty( $description ) ? '' : $description;
5
+ $header_actions_template = empty( $header_actions_template ) ? '' : $header_actions_template;
6
+ $body_template = empty( $body_template ) ? '' : $body_template;
7
+ $body_template_args = empty( $body_template_args ) ? array() : $body_template_args;
8
+ $footer_template = empty( $footer_template ) ? '' : $footer_template;
9
+ $footer_template_args = empty( $footer_template_args ) ? array() : $footer_template_args;
10
+ $small = empty( $small ) ? false : $small;
11
+ $is_member = empty( $_view['is_member'] ) ? false : true;
12
+ ?>
13
+
14
+ <div class="sui-dialog <?php echo esc_attr( $id ); ?>-dialog <?php echo $small ? 'sui-dialog-sm' : ''; ?> <?php echo $is_member ? 'is-member' : ''; ?>"
15
+ aria-hidden="true" tabindex="-1"
16
+ id="<?php echo esc_attr( $id ); ?>">
17
+
18
+ <div class="sui-dialog-overlay" data-a11y-dialog-hide></div>
19
+
20
+ <div class="sui-dialog-content" aria-labelledby="<?php echo esc_attr( $id ); ?>-dialog-title"
21
+ aria-describedby="<?php echo esc_attr( $id ); ?>-dialog-description" role="dialog">
22
+
23
+ <div class="sui-box" role="document">
24
+
25
+ <div class="sui-box-header">
26
+ <h3 class="sui-box-title"
27
+ id="<?php echo esc_attr( $id ); ?>-dialog-title"><?php echo esc_html( $title ); ?></h3>
28
+ <div class="sui-actions-right">
29
+ <?php if ( $header_actions_template ): ?>
30
+ <?php $this->_render( $header_actions_template ); ?>
31
+ <?php else: ?>
32
+ <button data-a11y-dialog-hide class="sui-dialog-close"
33
+ type="button"
34
+ aria-label="<?php esc_html_e( 'Close this dialog window', 'wds' ); ?>"></button>
35
+ <?php endif; ?>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="sui-box-body">
40
+ <?php if ( $description ): ?>
41
+ <p id="<?php echo esc_attr( $id ); ?>-dialog-description"><?php echo wp_kses_post( $description ); ?></p>
42
+ <?php endif; ?>
43
+ <?php if ( $body_template ): ?>
44
+ <?php $this->_render(
45
+ $body_template,
46
+ array_merge(
47
+ array( 'id' => $id ),
48
+ $body_template_args
49
+ )
50
+ ); ?>
51
+ <?php endif; ?>
52
+ </div>
53
+
54
+ <?php if ( $footer_template ): ?>
55
+ <div class="sui-box-footer">
56
+ <?php $this->_render(
57
+ $footer_template,
58
+ array_merge(
59
+ array( 'id' => $id ),
60
+ $footer_template_args
61
+ )
62
+ ); ?>
63
+ </div>
64
+ <?php endif; ?>
65
+
66
+ </div>
67
+
68
+ </div>
69
+
70
+ </div>
includes/admin/templates/notice.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  $message = empty( $message ) ? '' : $message;
3
- $class = empty( $class ) ? 'wds-notice-warning' : $class;
4
  ?>
5
- <div class="wds-notice <?php echo esc_attr( $class ); ?>">
6
  <p><?php echo wp_kses_post( $message ); ?></p>
7
  </div>
1
  <?php
2
  $message = empty( $message ) ? '' : $message;
3
+ $class = empty( $class ) ? 'sui-notice-warning' : $class;
4
  ?>
5
+ <div class="wds-notice sui-notice <?php echo esc_attr( $class ); ?>">
6
  <p><?php echo wp_kses_post( $message ); ?></p>
7
  </div>
includes/admin/templates/onpage/onpage-general-settings.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $title_key = empty( $title_key ) ? '' : $title_key;
3
+ $description_key = empty( $description_key ) ? '' : $description_key;
4
+ $keywords_key = empty( $keywords_key ) ? '' : $keywords_key;
5
+
6
+ $title_label_desc = empty( $title_label_desc )
7
+ ? esc_html__( 'Choose the variables from which SmartCrawl will automatically generate your SEO title from.', 'wds' ) : $title_label_desc;
8
+ $title_field_desc = empty( $title_field_desc )
9
+ ? '' : $title_field_desc;
10
+ $meta_label_desc = empty( $meta_label_desc )
11
+ ? esc_html__( 'A title needs a description. Choose the variables to automatically generate a description from.', 'wds' ) : $meta_label_desc;
12
+ $meta_field_desc = empty( $meta_field_desc )
13
+ ? '' : $meta_field_desc;
14
+
15
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
16
+ $options = empty( $_view['options'] ) ? array() : $_view['options'];
17
+ $option_name_format = $option_name . '[%s]';
18
+
19
+ $title = $title_key
20
+ ? smartcrawl_get_array_value( $options, $title_key )
21
+ : '';
22
+ $description = $description_key
23
+ ? smartcrawl_get_array_value( $options, $description_key )
24
+ : '';
25
+ $keywords = $keywords_key
26
+ ? smartcrawl_get_array_value( $options, $keywords_key )
27
+ : '';
28
+ ?>
29
+
30
+ <?php if ( $title_key ): ?>
31
+ <div class="sui-box-settings-row wds-title-row">
32
+ <div class="sui-box-settings-col-1">
33
+ <label for="<?php echo esc_attr( $title_key ); ?>"
34
+ class="sui-settings-label"><?php esc_html_e( 'Title', 'wds' ); ?></label>
35
+ <span class="sui-description"><?php echo esc_html( $title_label_desc ); ?></span>
36
+ </div>
37
+ <div class="sui-box-settings-col-2">
38
+ <div class="sui-insert-variables wds-allow-macros">
39
+ <input id="<?php echo esc_attr( $title_key ); ?>"
40
+ name="<?php echo esc_attr( sprintf( $option_name_format, $title_key ) ); ?>"
41
+ type="text" class="sui-form-control"
42
+ value="<?php echo esc_attr( $title ); ?>">
43
+ <?php $this->_render( 'macros-dropdown' ); ?>
44
+ </div>
45
+
46
+ <span class="sui-description"><?php echo esc_html( $title_field_desc ); ?></span>
47
+ </div>
48
+ </div>
49
+ <?php endif; ?>
50
+
51
+ <?php if ( $description_key ): ?>
52
+ <div class="sui-box-settings-row wds-description-row">
53
+ <div class="sui-box-settings-col-1">
54
+ <label for="<?php echo esc_attr( $description_key ); ?>"
55
+ class="sui-settings-label"><?php esc_html_e( 'Description', 'wds' ); ?></label>
56
+ <span class="sui-description"><?php echo esc_html( $meta_label_desc ); ?></span>
57
+ </div>
58
+ <div class="sui-box-settings-col-2">
59
+ <div class="sui-insert-variables wds-allow-macros">
60
+ <textarea id="<?php echo esc_attr( $description_key ); ?>"
61
+ name="<?php echo esc_attr( sprintf( $option_name_format, $description_key ) ); ?>"
62
+ type="text"
63
+ class="sui-form-control"><?php echo esc_textarea( $description ); ?></textarea>
64
+ <?php $this->_render( 'macros-dropdown' ); ?>
65
+ </div>
66
+
67
+ <span class="sui-description"><?php echo esc_html( $meta_field_desc ); ?></span>
68
+ </div>
69
+ </div>
70
+ <?php endif; ?>
71
+
72
+ <?php if ( $keywords_key ): ?>
73
+ <div class="sui-box-settings-row wds-keywords-row">
74
+ <div class="sui-box-settings-col-1">
75
+ <label for="<?php echo esc_attr( $keywords_key ); ?>"
76
+ class="sui-settings-label"><?php esc_html_e( 'Keywords', 'wds' ); ?></label>
77
+ <span class="sui-description"><?php esc_html_e( 'Adding keyword meta to your pages is largely redundant practice, but you can do this here if you wish to add some.' ); ?></span>
78
+ </div>
79
+ <div class="sui-box-settings-col-2">
80
+ <input id="<?php echo esc_attr( $keywords_key ); ?>"
81
+ name="<?php echo esc_attr( sprintf( $option_name_format, $keywords_key ) ); ?>"
82
+ type="text" class="sui-form-control"
83
+ value="<?php echo esc_attr( $keywords ); ?>">
84
+ <span class="sui-description">
85
+ <?php esc_html_e( 'Add as many keywords as you like, comma separated.', 'wds' ); ?>
86
+ </span>
87
+ </div>
88
+ </div>
89
+ <?php endif; ?>
includes/admin/templates/onpage/onpage-header-actions.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <button type="button" data-a11y-dialog-show="wds-supported-macros-modal"
2
+ class="sui-button sui-button-ghost"><?php esc_html_e( 'Browse Macros', 'wds' ); ?></button>
includes/admin/templates/onpage/onpage-macros-modal.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $macros = empty( $macros ) ? array() : $macros; ?>
2
+
3
+ <div id="wds-show-supported-macros">
4
+ <table class="wds-data-table wds-data-table-inverse-large">
5
+ <thead>
6
+ <tr>
7
+ <th class="label"><?php esc_html_e( 'Title', 'wds' ); ?></th>
8
+ <th class="result"><?php esc_html_e( 'Gets Replaced By', 'wds' ); ?></th>
9
+ </tr>
10
+ </thead>
11
+ <tfoot>
12
+ <tr>
13
+ <th class="label"><?php esc_html_e( 'Title', 'wds' ); ?></th>
14
+ <th class="result"><?php esc_html_e( 'Gets Replaced By', 'wds' ); ?></th>
15
+ </tr>
16
+ </tfoot>
17
+ <tbody>
18
+
19
+ <?php foreach ( $macros as $macro => $label ) { ?>
20
+ <tr>
21
+ <td class="data data-small"><?php echo esc_html( $macro ); ?></td>
22
+ <td class="data data-small"><?php echo esc_html( $label ); ?></td>
23
+ </tr>
24
+ <?php } ?>
25
+
26
+ </tbody>
27
+ </table>
28
+ </div>
includes/admin/templates/onpage/onpage-meta-robots.php CHANGED
@@ -8,8 +8,8 @@ if ( ! $items ) {
8
 
9
  <?php
10
  $this->_render( 'toggle-group', array(
11
- 'label' => __( 'Indexing', 'wds' ),
12
- 'description' => __( 'Choose whether you want your website to appear in search results.', 'wds' ),
13
  'separator' => true,
14
  'items' => $items,
15
  ) );
8
 
9
  <?php
10
  $this->_render( 'toggle-group', array(
11
+ 'label' => esc_html__( 'Indexing', 'wds' ),
12
+ 'description' => esc_html__( 'Choose whether you want your website to appear in search results.', 'wds' ),
13
  'separator' => true,
14
  'items' => $items,
15
  ) );
includes/admin/templates/onpage/onpage-og-disabled.php CHANGED
@@ -1,18 +1,19 @@
1
  <?php
2
  $message = esc_html__( 'OpenGraph is globally disabled.', 'wds' );
3
  if ( smartcrawl_subsite_setting_page_enabled( 'wds_social' ) ) {
 
4
  $message = sprintf(
5
  esc_html__( '%1$s You can enable it %2$s.', 'wds' ),
6
  $message,
7
  sprintf(
8
  '<a href="%s">%s</a>',
9
- Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL ),
10
  esc_html__( 'here', 'wds' )
11
  )
12
  );
13
  }
14
 
15
  $this->_render( 'notice', array(
16
- 'class' => 'wds-notice-info',
17
  'message' => $message,
18
  ) );
1
  <?php
2
  $message = esc_html__( 'OpenGraph is globally disabled.', 'wds' );
3
  if ( smartcrawl_subsite_setting_page_enabled( 'wds_social' ) ) {
4
+ $social_page = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL );
5
  $message = sprintf(
6
  esc_html__( '%1$s You can enable it %2$s.', 'wds' ),
7
  $message,
8
  sprintf(
9
  '<a href="%s">%s</a>',
10
+ esc_url_raw( add_query_arg( 'tab', 'tab_open_graph', $social_page ) ),
11
  esc_html__( 'here', 'wds' )
12
  )
13
  );
14
  }
15
 
16
  $this->_render( 'notice', array(
17
+ 'class' => 'sui-notice-info',
18
  'message' => $message,
19
  ) );
includes/admin/templates/onpage/onpage-og-settings.php CHANGED
@@ -5,7 +5,9 @@
5
  $section_enabled_field_id = 'og-active-' . $for_type;
6
  $section_enabled = ! empty( $_view['options'][ $section_enabled_field_id ] ) ? $_view['options'][ $section_enabled_field_id ] : false;
7
  $section_title = __( 'Enable OpenGraph', 'wds' );
8
- $section_description = __( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook.', 'wds' );
 
 
9
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
10
  $title_field_id = 'og-title-' . $for_type;
11
  $current_title = ! empty( $_view['options']["og-title-{$for_type}"] )
5
  $section_enabled_field_id = 'og-active-' . $for_type;
6
  $section_enabled = ! empty( $_view['options'][ $section_enabled_field_id ] ) ? $_view['options'][ $section_enabled_field_id ] : false;
7
  $section_title = __( 'Enable OpenGraph', 'wds' );
8
+ $section_description = empty( $section_description )
9
+ ? esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook.', 'wds' )
10
+ : $section_description;
11
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
12
  $title_field_id = 'og-title-' . $for_type;
13
  $current_title = ! empty( $_view['options']["og-title-{$for_type}"] )
includes/admin/templates/onpage/onpage-og-twitter.php CHANGED
@@ -4,47 +4,48 @@
4
  */
5
  $social_options = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_SOCIAL );
6
  $onpage_options = ! empty( $_view['options'] ) ? $_view['options'] : array();
 
 
7
 
8
  $og_enabled_field_id = 'og-active-' . esc_attr( $for_type );
9
  $og_enabled_globally = smartcrawl_get_array_value( $social_options, 'og-enable' );
10
  $og_enabled_locally = ! empty( $onpage_options[ $og_enabled_field_id ] ) ? $onpage_options[ $og_enabled_field_id ] : false;
 
11
 
12
  $twitter_enabled_field_id = 'twitter-active-' . esc_attr( $for_type );
13
  $twitter_enabled_globally = smartcrawl_get_array_value( $social_options, 'twitter-card-enable' );
14
  $twitter_enabled_locally = ! empty( $onpage_options[ $twitter_enabled_field_id ] ) ? $onpage_options[ $twitter_enabled_field_id ] : false;
 
15
  ?>
16
- <fieldset class="wds-table-fields-group wds-separator-top">
17
- <div class="wds-table-fields">
18
- <div class="label">
19
- <label class="wds-label">
20
- <?php esc_html_e( 'Options', 'wds' ); ?>
21
- </label>
22
- </div>
23
- <div class="fields">
24
- <div class="wds-toggleable <?php echo $og_enabled_locally ? '' : 'inactive'; ?>">
25
- <?php
26
- if ( ! $og_enabled_globally ) {
27
- $this->_render( 'onpage/onpage-og-disabled' );
28
- } else {
29
- $this->_render( 'onpage/onpage-og-settings', array(
30
- 'for_type' => $for_type,
31
- ) );
32
- }
33
- ?>
34
- </div>
35
- <p></p>
36
 
37
- <div class="wds-toggleable <?php echo $twitter_enabled_locally ? '' : 'inactive'; ?>">
38
- <?php
39
- if ( ! $twitter_enabled_globally ) {
40
- $this->_render( 'onpage/onpage-twitter-disabled' );
41
- } else {
42
- $this->_render( 'onpage/onpage-twitter-settings', array(
43
- 'for_type' => $for_type,
44
- ) );
45
- }
46
- ?>
47
- </div>
48
- </div>
49
  </div>
50
- </fieldset>
4
  */
5
  $social_options = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_SOCIAL );
6
  $onpage_options = ! empty( $_view['options'] ) ? $_view['options'] : array();
7
+ $social_label_desc = empty( $social_label_desc )
8
+ ? esc_html__( 'Enable or disable support for social platforms when this content is shared on them.' ) : $social_label_desc;
9
 
10
  $og_enabled_field_id = 'og-active-' . esc_attr( $for_type );
11
  $og_enabled_globally = smartcrawl_get_array_value( $social_options, 'og-enable' );
12
  $og_enabled_locally = ! empty( $onpage_options[ $og_enabled_field_id ] ) ? $onpage_options[ $og_enabled_field_id ] : false;
13
+ $og_description = empty( $og_description ) ? '' : $og_description;
14
 
15
  $twitter_enabled_field_id = 'twitter-active-' . esc_attr( $for_type );
16
  $twitter_enabled_globally = smartcrawl_get_array_value( $social_options, 'twitter-card-enable' );
17
  $twitter_enabled_locally = ! empty( $onpage_options[ $twitter_enabled_field_id ] ) ? $onpage_options[ $twitter_enabled_field_id ] : false;
18
+ $twitter_description = empty( $twitter_description ) ? '' : $twitter_description;
19
  ?>
20
+ <div class="sui-box-settings-row wds-social-row">
21
+ <div class="sui-box-settings-col-1">
22
+ <label class="sui-settings-label">
23
+ <?php esc_html_e( 'Social', 'wds' ); ?>
24
+ </label>
25
+ <span class="sui-description"><?php echo esc_html( $social_label_desc ); ?></span>
26
+ </div>
27
+ <div class="sui-box-settings-col-2">
28
+ <?php
29
+ if ( ! $og_enabled_globally ) {
30
+ $this->_render( 'onpage/onpage-og-disabled' );
31
+ } else {
32
+ $this->_render( 'onpage/onpage-og-settings', array(
33
+ 'for_type' => $for_type,
34
+ 'section_description' => $og_description,
35
+ ) );
36
+ }
37
+ ?>
38
+ <p></p>
 
39
 
40
+ <?php
41
+ if ( ! $twitter_enabled_globally ) {
42
+ $this->_render( 'onpage/onpage-twitter-disabled' );
43
+ } else {
44
+ $this->_render( 'onpage/onpage-twitter-settings', array(
45
+ 'for_type' => $for_type,
46
+ 'section_description' => $twitter_description,
47
+ ) );
48
+ }
49
+ ?>
 
 
50
  </div>
51
+ </div>
includes/admin/templates/onpage/onpage-preview.php CHANGED
@@ -1,10 +1,11 @@
1
  <?php
2
  $smartcrawl_options = Smartcrawl_Settings::get_options();
 
3
  $link = ! isset( $link ) ? home_url() : $link;
4
  $title = ! isset( $title ) ? get_bloginfo( 'name' ) : $title;
5
  $description = ! isset( $description ) ? get_bloginfo( 'description' ) : $description;
6
  ?>
7
- <div class="wds-preview-container">
8
  <div class="wds-preview">
9
  <div class="wds-preview-title">
10
  <h3>
1
  <?php
2
  $smartcrawl_options = Smartcrawl_Settings::get_options();
3
+ $showing_default = ! isset( $link ) && ! isset( $title ) && ! isset( $description );
4
  $link = ! isset( $link ) ? home_url() : $link;
5
  $title = ! isset( $title ) ? get_bloginfo( 'name' ) : $title;
6
  $description = ! isset( $description ) ? get_bloginfo( 'description' ) : $description;
7
  ?>
8
+ <div class="wds-preview-container" data-showing-default="<?php echo empty( $showing_default ) ? 'false' : 'true'; ?>">
9
  <div class="wds-preview">
10
  <div class="wds-preview-title">
11
  <h3>
includes/admin/templates/onpage/onpage-section-404.php CHANGED
@@ -1,27 +1,7 @@
1
- <?php $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name']; ?>
 
2
 
3
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
4
-
5
- <div class="wds-table-fields-group">
6
- <div class="wds-table-fields">
7
- <div class="label">
8
- <label for="title-404" class="wds-label"><?php esc_html_e( '404 Page Title', 'wds' ); ?></label>
9
- </div>
10
- <div class="fields wds-allow-macros">
11
- <input id='title-404' name='<?php echo esc_attr( $option_name ); ?>[title-404]' type='text'
12
- class='wds-field' value='<?php echo esc_attr( $_view['options']['title-404'] ); ?>'>
13
- </div>
14
- </div>
15
- </div>
16
-
17
- <div class="wds-table-fields-group">
18
- <div class="wds-table-fields">
19
- <div class="label">
20
- <label for="metadesc-404" class="wds-label"><?php esc_html_e( '404 Page Description', 'wds' ); ?></label>
21
- </div>
22
- <div class="fields wds-allow-macros">
23
- <textarea id='metadesc-404' name='<?php echo esc_attr( $option_name ); ?>[metadesc-404]' type='text'
24
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-404'] ); ?></textarea>
25
- </div>
26
- </div>
27
- </div>
1
+ <?php
2
+ $this->_render( 'onpage/onpage-preview' );
3
 
4
+ $this->_render( 'onpage/onpage-general-settings', array(
5
+ 'title_key' => 'title-404',
6
+ 'description_key' => 'metadesc-404',
7
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/onpage/onpage-section-author-archive.php CHANGED
@@ -1,43 +1,17 @@
1
  <?php
2
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
  $meta_robots_author = empty( $meta_robots_author ) ? '' : $meta_robots_author;
4
- ?>
5
 
6
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
7
 
8
- <div class="wds-table-fields-group">
9
- <div class="wds-table-fields">
10
- <div class="label">
11
- <label for="title-author" class="wds-label"><?php esc_html_e( 'Author Archive Title', 'wds' ); ?></label>
12
- </div>
13
- <div class="fields wds-allow-macros">
14
- <input id='title-author' name='<?php echo esc_attr( $option_name ); ?>[title-author]' type='text'
15
- class='wds-field' value='<?php echo esc_attr( $_view['options']['title-author'] ); ?>'>
16
- </div>
17
- </div>
18
- </div>
19
-
20
- <div class="wds-table-fields-group">
21
- <div class="wds-table-fields">
22
- <div class="label">
23
- <label for="metadesc-author"
24
- class="wds-label"><?php esc_html_e( 'Author Archive Meta Description', 'wds' ); ?></label>
25
- </div>
26
- <div class="fields wds-allow-macros">
27
- <textarea id='metadesc-author' name='<?php echo esc_attr( $option_name ); ?>[metadesc-author]' type='text'
28
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-author'] ); ?></textarea>
29
- </div>
30
- </div>
31
- </div>
32
 
33
- <?php
34
  $this->_render( 'onpage/onpage-og-twitter', array(
35
  'for_type' => 'author',
36
  ) );
37
- ?>
38
 
39
- <?php
40
  $this->_render( 'onpage/onpage-meta-robots', array(
41
  'items' => $meta_robots_author,
42
  ) );
43
- ?>
1
  <?php
 
2
  $meta_robots_author = empty( $meta_robots_author ) ? '' : $meta_robots_author;
 
3
 
4
+ $this->_render( 'onpage/onpage-preview' );
5
 
6
+ $this->_render( 'onpage/onpage-general-settings', array(
7
+ 'title_key' => 'title-author',
8
+ 'description_key' => 'metadesc-author',
9
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
 
11
  $this->_render( 'onpage/onpage-og-twitter', array(
12
  'for_type' => 'author',
13
  ) );
 
14
 
 
15
  $this->_render( 'onpage/onpage-meta-robots', array(
16
  'items' => $meta_robots_author,
17
  ) );
 
includes/admin/templates/onpage/onpage-section-buddypress-groups.php CHANGED
@@ -1,31 +1,19 @@
1
- <?php $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name']; ?>
 
 
2
 
3
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
 
 
 
4
 
5
- <div class="wds-table-fields-group">
6
- <div class="wds-table-fields">
7
- <div class="label">
8
- <label for="title-bp_groups"
9
- class="wds-label"><?php esc_html_e( 'BuddyPress Group Title', 'wds' ); ?></label>
10
- </div>
11
- <div class="fields wds-allow-macros">
12
- <input id='title-bp_groups' name='<?php echo esc_attr( $option_name ); ?>[title-bp_groups]' size=''
13
- type='text' class='wds-field'
14
- value='<?php echo esc_attr( $_view['options']['title-bp_groups'] ); ?>'>
15
- </div>
16
- </div>
17
- </div>
18
 
19
- <div class="wds-table-fields-group">
20
- <div class="wds-table-fields">
21
- <div class="label">
22
- <label for="metadesc-bp_groups"
23
- class="wds-label"><?php esc_html_e( 'BuddyPress Group Meta Description', 'wds' ); ?></label>
24
- </div>
25
- <div class="fields wds-allow-macros">
26
- <textarea id='metadesc-bp_groups' name='<?php echo esc_attr( $option_name ); ?>[metadesc-bp_groups]'
27
- type='text'
28
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-bp_groups'] ); ?></textarea>
29
- </div>
30
- </div>
31
- </div>
1
+ <?php
2
+ $meta_robots_bp_groups = empty( $meta_robots_bp_groups ) ? array() : $meta_robots_bp_groups;
3
+ $this->_render( 'onpage/onpage-preview' );
4
 
5
+ $this->_render( 'onpage/onpage-general-settings', array(
6
+ 'title_key' => 'title-bp_groups',
7
+ 'description_key' => 'metadesc-bp_groups',
8
+ ) );
9
 
10
+ $this->_render( 'onpage/onpage-og-twitter', array(
11
+ 'for_type' => 'bp_groups',
12
+ 'social_label_desc' => esc_html__( 'Enable or disable support for social platforms when a BuddyPress group is shared on them.', 'wds' ),
13
+ 'og_description' => esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook.', 'wds' ),
14
+ 'twitter_description' => esc_html__( 'Twitter Cards support enhances how your content appears when shared on Twitter.', 'wds' ),
15
+ ) );
 
 
 
 
 
 
 
16
 
17
+ $this->_render( 'onpage/onpage-meta-robots', array(
18
+ 'items' => $meta_robots_bp_groups,
19
+ ) );
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/onpage/onpage-section-buddypress-profile.php CHANGED
@@ -1,31 +1,19 @@
1
- <?php $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name']; ?>
 
 
2
 
3
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
 
 
 
4
 
5
- <div class="wds-table-fields-group">
6
- <div class="wds-table-fields">
7
- <div class="label">
8
- <label for="title-bp_profile"
9
- class="wds-label"><?php esc_html_e( 'BuddyPress Profile Title', 'wds' ); ?></label>
10
- </div>
11
- <div class="fields wds-allow-macros">
12
- <input id='title-bp_profile' name='<?php echo esc_attr( $option_name ); ?>[title-bp_profile]' size=''
13
- type='text' class='wds-field'
14
- value='<?php echo esc_attr( $_view['options']['title-bp_profile'] ); ?>'>
15
- </div>
16
- </div>
17
- </div>
18
 
19
- <div class="wds-table-fields-group">
20
- <div class="wds-table-fields">
21
- <div class="label">
22
- <label for="metadesc-bp_profile"
23
- class="wds-label"><?php esc_html_e( 'BuddyPress Profile Meta Description', 'wds' ); ?></label>
24
- </div>
25
- <div class="fields wds-allow-macros">
26
- <textarea id='metadesc-bp_profile' name='<?php echo esc_attr( $option_name ); ?>[metadesc-bp_profile]'
27
- type='text'
28
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-bp_profile'] ); ?></textarea>
29
- </div>
30
- </div>
31
- </div>
1
+ <?php
2
+ $meta_robots_bp_profile = empty( $meta_robots_bp_profile ) ? array() : $meta_robots_bp_profile;
3
+ $this->_render( 'onpage/onpage-preview' );
4
 
5
+ $this->_render( 'onpage/onpage-general-settings', array(
6
+ 'title_key' => 'title-bp_profile',
7
+ 'description_key' => 'metadesc-bp_profile',
8
+ ) );
9
 
10
+ $this->_render( 'onpage/onpage-og-twitter', array(
11
+ 'for_type' => 'bp_profile',
12
+ 'social_label_desc' => esc_html__( 'Enable or disable support for social platforms when a BuddyPress profile is shared on them.', 'wds' ),
13
+ 'og_description' => esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook.', 'wds' ),
14
+ 'twitter_description' => esc_html__( 'Twitter Cards support enhances how your content appears when shared on Twitter.', 'wds' ),
15
+ ) );
 
 
 
 
 
 
 
16
 
17
+ $this->_render( 'onpage/onpage-meta-robots', array(
18
+ 'items' => $meta_robots_bp_profile,
19
+ ) );
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/onpage/onpage-section-date-archive.php CHANGED
@@ -1,43 +1,17 @@
1
  <?php
2
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
  $meta_robots_date = empty( $meta_robots_date ) ? array() : $meta_robots_date;
4
- ?>
5
 
6
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
7
 
8
- <div class="wds-table-fields-group">
9
- <div class="wds-table-fields">
10
- <div class="label">
11
- <label for="title-date" class="wds-label"><?php esc_html_e( 'Date Archives Title', 'wds' ); ?></label>
12
- </div>
13
- <div class="fields wds-allow-macros">
14
- <input id='title-date' name='<?php echo esc_attr( $option_name ); ?>[title-date]' type='text'
15
- class='wds-field' value='<?php echo esc_attr( $_view['options']['title-date'] ); ?>'>
16
- </div>
17
- </div>
18
- </div>
19
-
20
- <div class="wds-table-fields-group">
21
- <div class="wds-table-fields">
22
- <div class="label">
23
- <label for="metadesc-date"
24
- class="wds-label"><?php esc_html_e( 'Date Archives Meta Description', 'wds' ); ?></label>
25
- </div>
26
- <div class="fields wds-allow-macros">
27
- <textarea id='metadesc-date' name='<?php echo esc_attr( $option_name ); ?>[metadesc-date]' type='text'
28
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-date'] ); ?></textarea>
29
- </div>
30
- </div>
31
- </div>
32
 
33
- <?php
34
  $this->_render( 'onpage/onpage-og-twitter', array(
35
  'for_type' => 'date',
36
  ) );
37
- ?>
38
 
39
- <?php
40
  $this->_render( 'onpage/onpage-meta-robots', array(
41
  'items' => $meta_robots_date,
42
  ) );
43
- ?>
1
  <?php
 
2
  $meta_robots_date = empty( $meta_robots_date ) ? array() : $meta_robots_date;
 
3
 
4
+ $this->_render( 'onpage/onpage-preview' );
5
 
6
+ $this->_render( 'onpage/onpage-general-settings', array(
7
+ 'title_key' => 'title-date',
8
+ 'description_key' => 'metadesc-date',
9
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
 
11
  $this->_render( 'onpage/onpage-og-twitter', array(
12
  'for_type' => 'date',
13
  ) );
 
14
 
 
15
  $this->_render( 'onpage/onpage-meta-robots', array(
16
  'items' => $meta_robots_date,
17
  ) );
 
includes/admin/templates/onpage/onpage-section-homepage.php CHANGED
@@ -3,62 +3,30 @@ $homepage_title = empty( $homepage_title ) ? '' : $homepage_title;
3
  $homepage_description = empty( $homepage_description ) ? '' : $homepage_description;
4
  $show_homepage_options = empty( $show_homepage_options ) ? '' : $show_homepage_options;
5
  $meta_robots_main_blog_archive = empty( $meta_robots_main_blog_archive ) ? '' : $meta_robots_main_blog_archive;
6
- $option_name = empty( $_view['option_name'] ) ? '' : '';
7
  ?>
8
 
9
- <?php $this->_render('onpage/onpage-preview'); ?>
10
 
11
  <?php if ( $show_homepage_options ) : ?>
12
 
13
- <div class="wds-table-fields-group">
14
- <div class="wds-table-fields">
15
- <div class="label">
16
- <label for="title-homepage" class="wds-label"><?php esc_html_e( 'Page Title', 'wds' ); ?></label>
17
- </div>
18
- <div class="fields wds-allow-macros">
19
- <input id='title-homepage' name='<?php echo esc_attr( $_view['option_name'] ); ?>[title-home]'
20
- type='text' class='wds-field' value='<?php echo esc_attr( $_view['options']['title-home'] ); ?>'>
21
- </div>
22
- </div>
23
- </div>
24
 
25
- <div class="wds-table-fields-group">
26
- <div class="wds-table-fields">
27
- <div class="label">
28
- <label for="metadesc-homepage"
29
- class="wds-label"><?php esc_html_e( 'Page Description', 'wds' ); ?></label>
30
- </div>
31
- <div class="fields wds-allow-macros">
32
- <textarea id='metadesc-homepage' name='<?php echo esc_attr( $_view['option_name'] ); ?>[metadesc-home]'
33
- type='text'
34
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-home'] ); ?></textarea>
35
- </div>
36
- </div>
37
- </div>
38
 
39
- <div class="wds-table-fields-group">
40
- <div class="wds-table-fields">
41
- <div class="label">
42
- <label for="metakeywords-homepage"
43
- class="wds-label"><?php esc_html_e( 'Page Keywords', 'wds' ); ?></label>
44
- </div>
45
- <div class="fields fields-with-legend">
46
- <input id='metakeywords-homepage' name='<?php echo esc_attr( $_view['option_name'] ); ?>[keywords-home]'
47
- type='text' class='wds-field'
48
- value='<?php echo esc_attr( $_view['options']['keywords-home'] ); ?>'>
49
- <span
50
- class="wds-field-legend"><?php echo sprintf( '%s <pre class="wds-pre wds-pre-inline">%s</pre>', esc_html__( 'Comma-separated keywords, e.g.', 'wds' ), esc_html__( 'word1, word2', 'wds' ) ); ?></span>
51
- </div>
52
- </div>
53
- </div>
54
 
55
- <?php
56
  $this->_render( 'onpage/onpage-og-twitter', array(
57
- 'for_type' => 'home',
 
58
  ) );
59
- ?>
60
 
61
- <?php
62
  $this->_render( 'onpage/onpage-meta-robots', array(
63
  'items' => $meta_robots_main_blog_archive,
64
  ) );
@@ -68,21 +36,19 @@ $option_name = empty( $_view['option_name'] ) ? '' : '';
68
 
69
  <?php
70
  $front_page = (int) get_option( 'page_on_front' );
71
- $edit_link = sprintf(
72
- '<a href="' . get_edit_post_link( $front_page ) . '">%s</a>',
73
- __( 'here', 'wds' )
74
- );
75
  ?>
76
- <div class="wds-notice wds-notice-info">
77
  <p>
78
  <?php
 
79
  if ( $front_page ) {
80
- printf(
81
- esc_html__( 'Your homepage is set to a static page. Configure your homepage SEO via the page itself %s.', 'wds' ),
82
- wp_kses_post( $edit_link )
83
- );
84
- } else {
85
- esc_html_e( 'Your homepage is set to a static page. Configure your homepage SEO via the page itself.', 'wds' );
 
86
  }
87
  ?>
88
  </p>
3
  $homepage_description = empty( $homepage_description ) ? '' : $homepage_description;
4
  $show_homepage_options = empty( $show_homepage_options ) ? '' : $show_homepage_options;
5
  $meta_robots_main_blog_archive = empty( $meta_robots_main_blog_archive ) ? '' : $meta_robots_main_blog_archive;
 
6
  ?>
7
 
8
+ <?php $this->_render( 'onpage/onpage-preview' ); ?>
9
 
10
  <?php if ( $show_homepage_options ) : ?>
11
 
12
+ <?php
13
+ $this->_render( 'onpage/onpage-general-settings', array(
14
+ 'title_key' => 'title-home',
15
+ 'title_label_desc' => esc_html__( 'Define the main title of your website that Google will index.', 'wds' ),
16
+ 'title_field_desc' => esc_html__( 'This is generally your brand name, sometimes with a tagline.', 'wds' ),
 
 
 
 
 
 
17
 
18
+ 'description_key' => 'metadesc-home',
19
+ 'meta_label_desc' => esc_html__( 'Set the default description that will accompany your SEO title in search engine results.', 'wds' ),
20
+ 'meta_field_desc' => esc_html__( 'Remember to keep it simple, to the point, and include a bit about what your website can offer potential visitors.', 'wds' ),
 
 
 
 
 
 
 
 
 
 
21
 
22
+ 'keywords_key' => 'keywords-home',
23
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
 
25
  $this->_render( 'onpage/onpage-og-twitter', array(
26
+ 'for_type' => 'home',
27
+ 'social_label_desc' => esc_html__( 'Enable or disable support for social platforms when your homepage is shared on them.', 'wds' ),
28
  ) );
 
29
 
 
30
  $this->_render( 'onpage/onpage-meta-robots', array(
31
  'items' => $meta_robots_main_blog_archive,
32
  ) );
36
 
37
  <?php
38
  $front_page = (int) get_option( 'page_on_front' );
 
 
 
 
39
  ?>
40
+ <div class="wds-notice sui-notice">
41
  <p>
42
  <?php
43
+ esc_html_e( 'Your homepage is set to a static page. Configure your homepage SEO via the page itself.', 'wds' );
44
  if ( $front_page ) {
45
+ ?>
46
+ <br/>
47
+ <a type="button"
48
+ href="<?php echo esc_attr( get_edit_post_link( $front_page ) ); ?>"
49
+ class="sui-button">
50
+ <?php esc_html_e( 'Go To Homepage', 'wds' ); ?></a>
51
+ <?php
52
  }
53
  ?>
54
  </p>
includes/admin/templates/onpage/onpage-section-post-type-archive.php CHANGED
@@ -1,57 +1,18 @@
1
  <?php
2
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
  $archive_post_type = empty( $archive_post_type ) ? '' : $archive_post_type;
4
- $archive_post_type_label = empty( $archive_post_type_label ) ? '' : $archive_post_type_label;
5
  $archive_post_type_robots = empty( $archive_post_type_robots ) ? '' : $archive_post_type_robots;
6
 
7
- $title_key = 'title-' . $archive_post_type;
8
- $title_value = smartcrawl_get_array_value( $_view['options'], $title_key );
9
 
10
- $metadesc_key = 'metadesc-' . $archive_post_type;
11
- $metadesc_value = smartcrawl_get_array_value( $_view['options'], $metadesc_key );
12
- ?>
13
-
14
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
15
-
16
- <div class="wds-table-fields-group">
17
- <div class="wds-table-fields">
18
- <div class="label">
19
- <label for="<?php echo esc_attr( $title_key ); ?>" class="wds-label">
20
- <?php echo esc_html( $archive_post_type_label ) . esc_html__( ' Archive Title', 'wds' ); ?>
21
- </label>
22
- </div>
23
- <div class="fields wds-allow-macros">
24
- <input id='<?php echo esc_attr( $title_key ); ?>'
25
- name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $title_key ); ?>]'
26
- type='text' class='wds-field'
27
- value='<?php echo esc_attr( $title_value ); ?>'>
28
- </div>
29
- </div>
30
- </div>
31
-
32
- <div class="wds-table-fields-group">
33
- <div class="wds-table-fields">
34
- <div class="label">
35
- <label for="<?php echo esc_attr( $metadesc_key ); ?>" class="wds-label">
36
- <?php echo esc_html( $archive_post_type_label ) . esc_html__( ' Archive Meta Description', 'wds' ); ?>
37
- </label>
38
- </div>
39
- <div class="fields wds-allow-macros">
40
- <textarea id='<?php echo esc_attr( $metadesc_key ); ?>'
41
- name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $metadesc_key ); ?>]'
42
- type='text' class='wds-field'><?php echo esc_textarea( $metadesc_value ); ?></textarea>
43
- </div>
44
- </div>
45
- </div>
46
 
47
- <?php
48
  $this->_render( 'onpage/onpage-og-twitter', array(
49
  'for_type' => $archive_post_type,
50
  ) );
51
- ?>
52
 
53
- <?php
54
  $this->_render( 'onpage/onpage-meta-robots', array(
55
  'items' => $archive_post_type_robots,
56
  ) );
57
- ?>
1
  <?php
 
2
  $archive_post_type = empty( $archive_post_type ) ? '' : $archive_post_type;
 
3
  $archive_post_type_robots = empty( $archive_post_type_robots ) ? '' : $archive_post_type_robots;
4
 
5
+ $this->_render( 'onpage/onpage-preview' );
 
6
 
7
+ $this->_render( 'onpage/onpage-general-settings', array(
8
+ 'title_key' => 'title-' . $archive_post_type,
9
+ 'description_key' => 'metadesc-' . $archive_post_type,
10
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
 
12
  $this->_render( 'onpage/onpage-og-twitter', array(
13
  'for_type' => $archive_post_type,
14
  ) );
 
15
 
 
16
  $this->_render( 'onpage/onpage-meta-robots', array(
17
  'items' => $archive_post_type_robots,
18
  ) );
 
includes/admin/templates/onpage/onpage-section-post-type.php CHANGED
@@ -1,50 +1,30 @@
1
  <?php
2
  $post_type = empty( $post_type ) ? '' : $post_type;
3
  $post_type_object = empty( $post_type_object ) ? '' : $post_type_object;
4
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
5
- ?>
 
6
 
7
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
 
8
 
9
- <div class="wds-table-fields-group">
10
- <div class="wds-table-fields">
11
- <div class="label">
12
- <label for="title-<?php echo esc_attr( $post_type ); ?>"
13
- class="wds-label"><?php printf( esc_html( __( '%s Title', 'wds' ) ), esc_html( $post_type_object->labels->singular_name ) ); ?></label>
14
- </div>
15
- <div class="fields wds-allow-macros">
16
- <input id='title-<?php echo esc_attr( $post_type ); ?>'
17
- name='<?php echo esc_attr( $option_name ); ?>[title-<?php echo esc_attr( $post_type ); ?>]'
18
- type='text'
19
- class='wds-field'
20
- value='<?php echo esc_attr( $_view['options'][ 'title-' . $post_type ] ); ?>'>
21
- </div>
22
- </div>
23
- </div>
24
 
25
- <div class="wds-table-fields-group">
26
- <div class="wds-table-fields">
27
- <div class="label">
28
- <label for="metadesc-<?php echo esc_attr( $post_type ); ?>"
29
- class="wds-label"><?php printf( esc_html( __( '%s Meta Description', 'wds' ) ), esc_html( $post_type_object->labels->singular_name ) ); ?></label>
30
- </div>
31
- <div class="fields wds-allow-macros">
32
- <textarea id='metadesc-<?php echo esc_attr( $post_type ); ?>'
33
- name='<?php echo esc_attr( $option_name ); ?>[metadesc-<?php echo esc_attr( $post_type ); ?>]'
34
- type='text'
35
- class='wds-field'><?php echo esc_textarea( $_view['options'][ 'metadesc-' . $post_type ] ); ?></textarea>
36
- </div>
37
- </div>
38
 
39
- <?php
40
- $this->_render( 'onpage/onpage-og-twitter', array(
41
- 'for_type' => $post_type,
42
- ) );
43
- ?>
44
 
45
- <?php
46
- $this->_render( 'onpage/onpage-meta-robots', array(
47
- 'items' => $post_type_robots,
48
- ) );
49
- ?>
50
- </div>
 
 
 
 
1
  <?php
2
  $post_type = empty( $post_type ) ? '' : $post_type;
3
  $post_type_object = empty( $post_type_object ) ? '' : $post_type_object;
4
+ $post_type_robots = empty( $post_type_robots ) ? array() : $post_type_robots;
5
+ $singular_name = empty( $post_type_object->labels->singular_name )
6
+ ? 'post' : strtolower( $post_type_object->labels->singular_name );
7
 
8
+ $og_description = esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook. You can set default values here but also customize this per %s via the post editor.', 'wds' );
9
+ $og_description = sprintf( $og_description, $singular_name );
10
 
11
+ $twitter_description = esc_html__( 'Twitter Cards support enhances how your content appears when shared on Twitter. You can set default values here but also customize this per %s via the post editor.', 'wds' );
12
+ $twitter_description = sprintf( $twitter_description, $singular_name );
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ $this->_render( 'onpage/onpage-preview' );
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
+ $this->_render( 'onpage/onpage-general-settings', array(
17
+ 'title_key' => 'title-' . $post_type,
18
+ 'description_key' => 'metadesc-' . $post_type,
19
+ ) );
 
20
 
21
+ $this->_render( 'onpage/onpage-og-twitter', array(
22
+ 'for_type' => $post_type,
23
+ 'social_label_desc' => esc_html__( 'Enable or disable support for social platforms when this post type is shared on them.', 'wds' ),
24
+ 'og_description' => $og_description,
25
+ 'twitter_description' => $twitter_description,
26
+ ) );
27
+
28
+ $this->_render( 'onpage/onpage-meta-robots', array(
29
+ 'items' => $post_type_robots,
30
+ ) );
includes/admin/templates/onpage/onpage-section-search.php CHANGED
@@ -1,43 +1,17 @@
1
  <?php
2
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
  $meta_robots_search = empty( $meta_robots_search ) ? array() : $meta_robots_search;
4
- ?>
5
 
6
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
7
 
8
- <div class="wds-table-fields-group">
9
- <div class="wds-table-fields">
10
- <div class="label">
11
- <label for="title-search" class="wds-label"><?php esc_html_e( 'Search Page Title', 'wds' ); ?></label>
12
- </div>
13
- <div class="fields wds-allow-macros">
14
- <input id='title-search' name='<?php echo esc_attr( $option_name ); ?>[title-search]' type='text'
15
- class='wds-field' value='<?php echo esc_attr( $_view['options']['title-search'] ); ?>'>
16
- </div>
17
- </div>
18
- </div>
19
-
20
- <div class="wds-table-fields-group">
21
- <div class="wds-table-fields">
22
- <div class="label">
23
- <label for="metadesc-search"
24
- class="wds-label"><?php esc_html_e( 'Search Page Meta Description', 'wds' ); ?></label>
25
- </div>
26
- <div class="fields wds-allow-macros">
27
- <textarea id='metadesc-search' name='<?php echo esc_attr( $option_name ); ?>[metadesc-search]' type='text'
28
- class='wds-field'><?php echo esc_textarea( $_view['options']['metadesc-search'] ); ?></textarea>
29
- </div>
30
- </div>
31
- </div>
32
 
33
- <?php
34
  $this->_render( 'onpage/onpage-og-twitter', array(
35
  'for_type' => 'search',
36
  ) );
37
- ?>
38
 
39
- <?php
40
  $this->_render( 'onpage/onpage-meta-robots', array(
41
  'items' => $meta_robots_search,
42
  ) );
43
- ?>
1
  <?php
 
2
  $meta_robots_search = empty( $meta_robots_search ) ? array() : $meta_robots_search;
 
3
 
4
+ $this->_render( 'onpage/onpage-preview' );
5
 
6
+ $this->_render( 'onpage/onpage-general-settings', array(
7
+ 'title_key' => 'title-search',
8
+ 'description_key' => 'metadesc-search',
9
+ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
 
11
  $this->_render( 'onpage/onpage-og-twitter', array(
12
  'for_type' => 'search',
13
  ) );
 
14
 
 
15
  $this->_render( 'onpage/onpage-meta-robots', array(
16
  'items' => $meta_robots_search,
17
  ) );
 
includes/admin/templates/onpage/onpage-section-settings.php CHANGED
@@ -1,13 +1,15 @@
1
  <?php $separators = empty( $separators ) ? array() : $separators; ?>
2
- <div class="wds-table-fields-group">
3
- <div class="wds-table-fields">
4
- <div class="label">
5
- <label for="separator" class="wds-label"><?php esc_html_e( 'Separator', 'wds' ); ?></label>
6
- <p class="wds-label-description">
7
- <?php esc_html_e( 'The separator refers to the break between variables which you can use by referencing the %%sep%% tag. You can choose a preset one or bake your own.', 'wds' ); ?>
 
 
8
  </p>
9
  </div>
10
- <div class="fields">
11
  <div class="wds-preset-separators">
12
  <?php foreach ( $separators as $key => $separator ) : ?>
13
  <input
@@ -28,8 +30,7 @@
28
  placeholder="<?php esc_attr_e( 'Enter custom separator', 'wds' ); ?>"
29
  name='<?php echo esc_attr( $_view['option_name'] ); ?>[separator]'
30
  type='text'
31
- class='wds-field'
32
  value='<?php echo esc_attr( $_view['options']['separator'] ); ?>'/>
33
  </div>
34
  </div>
35
- </div>
1
  <?php $separators = empty( $separators ) ? array() : $separators; ?>
2
+ <div class="sui-box-settings-row">
3
+ <div class="sui-box-settings-col-1">
4
+ <label for="separator" class="sui-settings-label"><?php esc_html_e( 'Separator', 'wds' ); ?></label>
5
+ <p class="sui-description">
6
+ <?php echo sprintf(
7
+ esc_html__( 'The separator refers to the break between variables which you can use by referencing the %s tag. You can choose a preset one or bake your own.', 'wds' ),
8
+ '%%sep%%'
9
+ ); ?>
10
  </p>
11
  </div>
12
+ <div class="sui-box-settings-col-2">
13
  <div class="wds-preset-separators">
14
  <?php foreach ( $separators as $key => $separator ) : ?>
15
  <input
30
  placeholder="<?php esc_attr_e( 'Enter custom separator', 'wds' ); ?>"
31
  name='<?php echo esc_attr( $_view['option_name'] ); ?>[separator]'
32
  type='text'
33
+ class='sui-form-control'
34
  value='<?php echo esc_attr( $_view['options']['separator'] ); ?>'/>
35
  </div>
36
  </div>
 
includes/admin/templates/onpage/onpage-section-taxonomy.php CHANGED
@@ -1,49 +1,29 @@
1
  <?php
2
  $taxonomy = empty( $taxonomy ) ? new stdClass() : $taxonomy;
3
- $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
4
  $meta_robots = empty( $meta_robots ) ? array() : $meta_robots;
5
- ?>
 
6
 
7
- <?php $this->_render( 'onpage/onpage-preview' ); ?>
 
8
 
9
- <div class="wds-table-fields-group">
10
- <div class="wds-table-fields">
11
- <div class="label">
12
- <label for="title-<?php echo esc_attr( $taxonomy->name ); ?>"
13
- class="wds-label"><?php printf( esc_html( __( '%s Title', 'wds' ) ), esc_html( ucfirst( $taxonomy->label ) ) ); ?></label>
14
- </div>
15
- <div class="fields wds-allow-macros">
16
- <input id='title-<?php echo esc_attr( $taxonomy->name ); ?>'
17
- name='<?php echo esc_attr( $option_name ); ?>[title-<?php echo esc_attr( $taxonomy->name ); ?>]'
18
- type='text'
19
- class='wds-field' value='<?php echo esc_attr( $_view['options'][ 'title-' . $taxonomy->name ] ); ?>'>
20
- </div>
21
- </div>
22
- </div>
23
 
24
- <div class="wds-table-fields-group">
25
- <div class="wds-table-fields">
26
- <div class="label">
27
- <label for="metadesc-<?php echo esc_attr( $taxonomy->name ); ?>"
28
- class="wds-label"><?php printf( esc_html( __( '%s Meta Description', 'wds' ) ), esc_html( ucfirst( $taxonomy->label ) ) ); ?></label>
29
- </div>
30
- <div class="fields wds-allow-macros">
31
- <textarea id='metadesc-<?php echo esc_attr( $taxonomy->name ); ?>'
32
- name='<?php echo esc_attr( $option_name ); ?>[metadesc-<?php echo esc_attr( $taxonomy->name ); ?>]'
33
- type='text'
34
- class='wds-field'><?php echo esc_textarea( $_view['options'][ 'metadesc-' . $taxonomy->name ] ); ?></textarea>
35
- </div>
36
- </div>
37
- </div>
38
 
39
- <?php
40
  $this->_render( 'onpage/onpage-og-twitter', array(
41
- 'for_type' => $taxonomy->name,
 
 
 
42
  ) );
43
- ?>
44
 
45
- <?php
46
  $this->_render( 'onpage/onpage-meta-robots', array(
47
  'items' => $meta_robots,
48
  ) );
49
- ?>
1
  <?php
2
  $taxonomy = empty( $taxonomy ) ? new stdClass() : $taxonomy;
 
3
  $meta_robots = empty( $meta_robots ) ? array() : $meta_robots;
4
+ $singular_name = empty( $taxonomy->labels->singular_name )
5
+ ? 'post' : strtolower( $taxonomy->labels->singular_name );
6
 
7
+ $og_description = esc_html__( 'OpenGraph support enhances how your content appears when shared on social networks such as Facebook. You can set default values here but also customize this for each %s.', 'wds' );
8
+ $og_description = sprintf( $og_description, $singular_name );
9
 
10
+ $twitter_description = esc_html__( 'Twitter Cards support enhances how your content appears when shared on Twitter. You can set default values here but also customize this for each %s.', 'wds' );
11
+ $twitter_description = sprintf( $twitter_description, $singular_name );
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ $this->_render( 'onpage/onpage-preview' );
14
+
15
+ $this->_render( 'onpage/onpage-general-settings', array(
16
+ 'title_key' => 'title-' . $taxonomy->name,
17
+ 'description_key' => 'metadesc-' . $taxonomy->name,
18
+ ) );
 
 
 
 
 
 
 
 
19
 
 
20
  $this->_render( 'onpage/onpage-og-twitter', array(
21
+ 'for_type' => $taxonomy->name,
22
+ 'social_label_desc' => esc_html__( 'Enable or disable support for social platforms when this taxonomy is shared on them.', 'wds' ),
23
+ 'og_description' => $og_description,
24
+ 'twitter_description' => $twitter_description,
25
  ) );
 
26
 
 
27
  $this->_render( 'onpage/onpage-meta-robots', array(
28
  'items' => $meta_robots,
29
  ) );
 
includes/admin/templates/onpage/onpage-settings.php CHANGED
@@ -1,66 +1,52 @@
1
- <div id="container" class="wrap wrap-wds wds-page wds-page-autolinks">
2
- <section id="header">
3
- <?php $this->_render( 'settings-message-top' ); ?>
4
- <div class="actions">
5
- <a href="#show-supported-macros-modal" rel="dialog"
6
- class="button button-small button-light actions-button"><?php esc_html_e( 'Browse Macros', 'wds' ); ?></a>
7
- <a target="_blank" class="button button-small button-light actions-button"
8
- href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#chapter-2">
9
- <i class="wds-icon-academy"></i>
10
- <?php esc_html_e( 'View Documentation', 'wds' ); ?>
11
- </a>
12
- </div>
13
- <h1><?php esc_html_e( 'Title & Meta', 'wds' ); ?></h1>
14
- </section><!-- end header -->
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
- <dialog class="wds-modal" id="show-supported-macros-modal"
17
- title="<?php esc_html_e( 'Supported Macros', 'wds' ); ?>">
18
- <div id="wds-show-supported-macros">
19
- <table class="wds-data-table wds-data-table-inverse-large">
20
- <thead>
21
- <tr>
22
- <th class="label"><?php esc_html_e( 'Title', 'wds' ); ?></th>
23
- <th class="result"><?php esc_html_e( 'Gets Replaced By', 'wds' ); ?></th>
24
- </tr>
25
- </thead>
26
- <tfoot>
27
- <tr>
28
- <th class="label"><?php esc_html_e( 'Title', 'wds' ); ?></th>
29
- <th class="result"><?php esc_html_e( 'Gets Replaced By', 'wds' ); ?></th>
30
- </tr>
31
- </tfoot>
32
- <tbody>
33
-
34
- <?php foreach ( $macros as $macro => $label ) { ?>
35
- <tr>
36
- <td class="data data-small"><?php echo esc_html( $macro ); ?></td>
37
- <td class="data data-small"><?php echo esc_html( $label ); ?></td>
38
- </tr>
39
- <?php } ?>
40
-
41
- </tbody>
42
- </table>
43
- </div>
44
- </dialog>
45
  <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
46
- <?php settings_fields( $_view['option_name'] ); ?>
47
 
48
  <input type="hidden"
49
  name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
50
  value="1">
51
 
52
- <div class="vertical-tabs" id="page-title-meta-tabs">
 
 
53
  <?php
54
  /*
55
  * Homepage tab
56
  */
57
  $this->_render( 'vertical-tab', array(
58
  'tab_id' => 'tab_homepage',
59
- 'tab_name' => __( 'Homepage', 'wds' ),
60
  'is_active' => 'tab_homepage' === $active_tab,
 
61
  'tab_sections' => array(
62
  array(
63
- 'section_description' => __( 'Customize your homepage title, description and meta.', 'wds' ),
64
  'section_type' => $show_homepage_options ? 'homepage' : 'static-homepage',
65
  'section_template' => 'onpage/onpage-section-homepage',
66
  'section_args' => array(
@@ -84,7 +70,7 @@
84
 
85
  $post_type_sections[] = array(
86
  'section_title' => $post_type_object->labels->name,
87
- 'section_description' => sprintf( esc_html__( 'Customize your %s title, description and meta.', 'wds' ), $post_type_object->labels->singular_name ),
88
  'section_type' => $post_type,
89
  'section_template' => 'onpage/onpage-section-post-type',
90
  'section_args' => array(
@@ -97,7 +83,7 @@
97
 
98
  $this->_render( 'vertical-tab', array(
99
  'tab_id' => 'tab_post_types',
100
- 'tab_name' => __( 'Post Types', 'wds' ),
101
  'is_active' => 'tab_post_types' === $active_tab,
102
  'tab_sections' => $post_type_sections,
103
  ) );
@@ -108,14 +94,14 @@
108
  $taxonomy_sections = array();
109
  $taxonomies = array_merge(
110
  array( 'post_tag', 'category' ),
111
- get_taxonomies( array( '_builtin' => false ) )
112
  );
113
  foreach ( $taxonomies as $taxonomy_name ) {
114
  $taxonomy = get_taxonomy( $taxonomy_name );
115
  $meta_robots_taxonomy_name = 'meta_robots_' . str_replace( '-', '_', $taxonomy->name );
116
  $taxonomy_sections[] = array(
117
  'section_title' => $taxonomy->label,
118
- 'section_description' => sprintf( __( 'Customize the title, description and meta of %s.', 'wds' ), $taxonomy->label ),
119
  'section_type' => $taxonomy->name,
120
  'section_template' => 'onpage/onpage-section-taxonomy',
121
  'section_args' => array(
@@ -127,7 +113,7 @@
127
 
128
  $this->_render( 'vertical-tab', array(
129
  'tab_id' => 'tab_taxonomies',
130
- 'tab_name' => __( 'Taxonomies', 'wds' ),
131
  'is_active' => 'tab_taxonomies' === $active_tab,
132
  'tab_sections' => $taxonomy_sections,
133
  ) );
@@ -135,30 +121,32 @@
135
  $archive_sections = array(
136
  // Author archive
137
  array(
138
- 'section_title' => __( 'Author Archive', 'wds' ),
139
- 'section_description' => __( 'If you are the only author of your website content Google may see your author archives as duplicate content to your Blog Homepage. If this is the case we recommend disabling author archives.', 'wds' ),
140
  'section_type' => 'author-archive',
141
  'section_template' => 'onpage/onpage-section-author-archive',
142
  'section_enabled_option' => 'enable-author-archive',
 
143
  'section_args' => array(
144
  'meta_robots_author' => $meta_robots_author,
145
  ),
146
  ),
147
  // Date archive
148
  array(
149
- 'section_title' => __( 'Date Archive', 'wds' ),
150
- 'section_description' => __( 'Google may see your date archives as duplicate content to your Blog Homepage. For this reason we recommend disabling date archives.', 'wds' ),
151
  'section_type' => 'date-archive',
152
  'section_template' => 'onpage/onpage-section-date-archive',
153
  'section_enabled_option' => 'enable-date-archive',
 
154
  'section_args' => array(
155
  'meta_robots_date' => $meta_robots_date,
156
  ),
157
  ),
158
  // Search page
159
  array(
160
- 'section_title' => __( 'Search Page', 'wds' ),
161
- 'section_description' => __( 'Customize your search page title, description and meta.', 'wds' ),
162
  'section_type' => 'search-page',
163
  'section_template' => 'onpage/onpage-section-search',
164
  'section_args' => array(
@@ -167,8 +155,8 @@
167
  ),
168
  // 404 page
169
  array(
170
- 'section_title' => __( '404 Page', 'wds' ),
171
- 'section_description' => __( 'Customize your 404 page title, description and meta.', 'wds' ),
172
  'section_type' => '404-page',
173
  'section_template' => 'onpage/onpage-section-404',
174
  'section_args' => array(),
@@ -181,10 +169,10 @@
181
  foreach ( $archive_post_types as $archive_post_type => $archive_post_type_label ) {
182
 
183
  $archive_sections[] = array(
184
- 'section_title' => $archive_post_type_label . esc_html__( ' Archive Title', 'wds' ),
185
  'section_description' => sprintf(
186
  esc_html__( 'Customize title, description and meta for the archive page of custom post type %s.', 'wds' ),
187
- $archive_post_type_label
188
  ),
189
  'section_type' => $archive_post_type,
190
  'section_template' => 'onpage/onpage-section-post-type-archive',
@@ -201,7 +189,7 @@
201
  */
202
  $this->_render( 'vertical-tab', array(
203
  'tab_id' => 'tab_archives',
204
- 'tab_name' => __( 'Archives', 'wds' ),
205
  'is_active' => 'tab_archives' === $active_tab,
206
  'tab_sections' => $archive_sections,
207
  ) );
@@ -210,28 +198,32 @@
210
 
211
  if ( function_exists( 'groups_get_groups' ) && ( is_network_admin() || is_main_site() ) ) {
212
  $buddypress_sections[] = array(
213
- 'section_title' => __( 'BuddyPress Groups', 'wds' ),
214
- 'section_description' => __( 'Customize your BuddyPress group title, description and meta options.', 'wds' ),
215
  'section_type' => 'bp-group',
216
  'section_template' => 'onpage/onpage-section-buddypress-groups',
217
- 'section_args' => array(),
 
 
218
  );
219
  }
220
 
221
- if ( defined( 'BP_VERSION' ) && ( is_network_admin() || is_main_site() ) ) {
222
  $buddypress_sections[] = array(
223
- 'section_title' => __( 'BuddyPress Profile', 'wds' ),
224
- 'section_description' => __( 'Customize your BuddyPress profile title, description and meta options.', 'wds' ),
225
  'section_type' => 'bp-profile',
226
  'section_template' => 'onpage/onpage-section-buddypress-profile',
227
- 'section_args' => array(),
 
 
228
  );
229
  }
230
 
231
  if ( $buddypress_sections ) {
232
  $this->_render( 'vertical-tab', array(
233
  'tab_id' => 'tab_buddypress',
234
- 'tab_name' => __( 'BuddyPress', 'wds' ),
235
  'is_active' => 'tab_buddypress' === $active_tab,
236
  'tab_sections' => $buddypress_sections,
237
  ) );
@@ -241,7 +233,7 @@
241
  <?php
242
  $this->_render( 'vertical-tab', array(
243
  'tab_id' => 'tab_settings',
244
- 'tab_name' => __( 'Settings', 'wds' ),
245
  'is_active' => 'tab_settings' === $active_tab,
246
  'tab_sections' => array(
247
  array(
@@ -258,4 +250,6 @@
258
  </div><!-- end page-title-meta-tabs -->
259
 
260
  </form>
 
 
261
  </div><!-- end wds-page-onpage -->
1
+ <?php
2
+ $macros = empty( $macros ) ? array() : $macros;
3
+ $active_tab = empty( $active_tab ) ? '' : $active_tab;
4
+ $buddypress_active = defined( 'BP_VERSION' );
5
+ ?>
6
+
7
+ <?php $this->_render( 'before-page-container' ); ?>
8
+
9
+ <div id="container" class="sui-wrap wrap wrap-wds wds-page wds-page-onpage">
10
+ <?php $this->_render( 'page-header', array(
11
+ 'title' => esc_html__( 'Title & Meta', 'wds' ),
12
+ 'documentation_chapter' => 'title-meta',
13
+ 'extra_actions' => 'onpage/onpage-header-actions',
14
+ ) ); ?>
15
+
16
+ <?php
17
+ $this->_render( 'modal', array(
18
+ 'id' => 'wds-supported-macros-modal',
19
+ 'title' => esc_html__( 'Supported Macros', 'wds' ),
20
+ 'body_template' => 'onpage/onpage-macros-modal',
21
+ 'body_template_args' => array(
22
+ 'macros' => $macros,
23
+ ),
24
+ 'small' => true,
25
+ ) );
26
+ ?>
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
29
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
30
 
31
  <input type="hidden"
32
  name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
33
  value="1">
34
 
35
+ <div class="wds-vertical-tabs-container sui-row-with-sidenav" id="page-title-meta-tabs">
36
+ <?php $this->_render( 'onpage/onpage-sidenav', array( 'active_tab' => $active_tab ) ); ?>
37
+
38
  <?php
39
  /*
40
  * Homepage tab
41
  */
42
  $this->_render( 'vertical-tab', array(
43
  'tab_id' => 'tab_homepage',
44
+ 'tab_name' => esc_html__( 'Homepage', 'wds' ),
45
  'is_active' => 'tab_homepage' === $active_tab,
46
+ 'button_text' => $show_homepage_options ? esc_html__( 'Save Settings', 'wds' ) : false,
47
  'tab_sections' => array(
48
  array(
49
+ 'section_description' => esc_html__( 'Customize your homepage title, description and meta options.', 'wds' ),
50
  'section_type' => $show_homepage_options ? 'homepage' : 'static-homepage',
51
  'section_template' => 'onpage/onpage-section-homepage',
52
  'section_args' => array(
70
 
71
  $post_type_sections[] = array(
72
  'section_title' => $post_type_object->labels->name,
73
+ 'section_description' => sprintf( esc_html__( 'Customize your %s title, description and meta options.', 'wds' ), strtolower( $post_type_object->labels->singular_name ) ),
74
  'section_type' => $post_type,
75
  'section_template' => 'onpage/onpage-section-post-type',
76
  'section_args' => array(
83
 
84
  $this->_render( 'vertical-tab', array(
85
  'tab_id' => 'tab_post_types',
86
+ 'tab_name' => esc_html__( 'Post Types', 'wds' ),
87
  'is_active' => 'tab_post_types' === $active_tab,
88
  'tab_sections' => $post_type_sections,
89
  ) );
94
  $taxonomy_sections = array();
95
  $taxonomies = array_merge(
96
  array( 'post_tag', 'category' ),
97
+ get_taxonomies( array( '_builtin' => false, 'public' => true ) )
98
  );
99
  foreach ( $taxonomies as $taxonomy_name ) {
100
  $taxonomy = get_taxonomy( $taxonomy_name );
101
  $meta_robots_taxonomy_name = 'meta_robots_' . str_replace( '-', '_', $taxonomy->name );
102
  $taxonomy_sections[] = array(
103
  'section_title' => $taxonomy->label,
104
+ 'section_description' => sprintf( esc_html__( 'Customize the title, description and meta options for %s.', 'wds' ), strtolower( $taxonomy->label ) ),
105
  'section_type' => $taxonomy->name,
106
  'section_template' => 'onpage/onpage-section-taxonomy',
107
  'section_args' => array(
113
 
114
  $this->_render( 'vertical-tab', array(
115
  'tab_id' => 'tab_taxonomies',
116
+ 'tab_name' => esc_html__( 'Taxonomies', 'wds' ),
117
  'is_active' => 'tab_taxonomies' === $active_tab,
118
  'tab_sections' => $taxonomy_sections,
119
  ) );
121
  $archive_sections = array(
122
  // Author archive
123
  array(
124
+ 'section_title' => esc_html__( 'Author Archive', 'wds' ),
125
+ 'section_description' => esc_html__( 'If you are the only author of your website content Google may see your author archives as duplicate content to your Blog Homepage. If this is the case we recommend disabling author archives.', 'wds' ),
126
  'section_type' => 'author-archive',
127
  'section_template' => 'onpage/onpage-section-author-archive',
128
  'section_enabled_option' => 'enable-author-archive',
129
+ 'section_toggle_tooltip' => esc_html__( 'Enable/Disable author archives depending on whether you require them or not' ),
130
  'section_args' => array(
131
  'meta_robots_author' => $meta_robots_author,
132
  ),
133
  ),
134
  // Date archive
135
  array(
136
+ 'section_title' => esc_html__( 'Date Archive', 'wds' ),
137
+ 'section_description' => esc_html__( 'Google may see your date archives as duplicate content to your Blog Homepage. For this reason we recommend disabling date archives.', 'wds' ),
138
  'section_type' => 'date-archive',
139
  'section_template' => 'onpage/onpage-section-date-archive',
140
  'section_enabled_option' => 'enable-date-archive',
141
+ 'section_toggle_tooltip' => esc_html__( 'Enable/Disable date archives depending on whether you require them or not' ),
142
  'section_args' => array(
143
  'meta_robots_date' => $meta_robots_date,
144
  ),
145
  ),
146
  // Search page
147
  array(
148
+ 'section_title' => esc_html__( 'Search Page', 'wds' ),
149
+ 'section_description' => esc_html__( 'Customize your search page title, description and meta options.', 'wds' ),
150
  'section_type' => 'search-page',
151
  'section_template' => 'onpage/onpage-section-search',
152
  'section_args' => array(
155
  ),
156
  // 404 page
157
  array(
158
+ 'section_title' => esc_html__( '404 Page', 'wds' ),
159
+ 'section_description' => esc_html__( 'Customize your 404 page title, description and meta options.', 'wds' ),
160
  'section_type' => '404-page',
161
  'section_template' => 'onpage/onpage-section-404',
162
  'section_args' => array(),
169
  foreach ( $archive_post_types as $archive_post_type => $archive_post_type_label ) {
170
 
171
  $archive_sections[] = array(
172
+ 'section_title' => $archive_post_type_label . esc_html__( ' Archive', 'wds' ),
173
  'section_description' => sprintf(
174
  esc_html__( 'Customize title, description and meta for the archive page of custom post type %s.', 'wds' ),
175
+ strtolower( $archive_post_type_label )
176
  ),
177
  'section_type' => $archive_post_type,
178
  'section_template' => 'onpage/onpage-section-post-type-archive',
189
  */
190
  $this->_render( 'vertical-tab', array(
191
  'tab_id' => 'tab_archives',
192
+ 'tab_name' => esc_html__( 'Archives', 'wds' ),
193
  'is_active' => 'tab_archives' === $active_tab,
194
  'tab_sections' => $archive_sections,
195
  ) );
198
 
199
  if ( function_exists( 'groups_get_groups' ) && ( is_network_admin() || is_main_site() ) ) {
200
  $buddypress_sections[] = array(
201
+ 'section_title' => esc_html__( 'BuddyPress Groups', 'wds' ),
202
+ 'section_description' => esc_html__( 'Customize your BuddyPress group title, description and meta options.', 'wds' ),
203
  'section_type' => 'bp-group',
204
  'section_template' => 'onpage/onpage-section-buddypress-groups',
205
+ 'section_args' => array(
206
+ 'meta_robots_bp_groups' => $meta_robots_bp_groups,
207
+ ),
208
  );
209
  }
210
 
211
+ if ( $buddypress_active && ( is_network_admin() || is_main_site() ) ) {
212
  $buddypress_sections[] = array(
213
+ 'section_title' => esc_html__( 'BuddyPress Profile', 'wds' ),
214
+ 'section_description' => esc_html__( 'Customize your BuddyPress profile title, description and meta options.', 'wds' ),
215
  'section_type' => 'bp-profile',
216
  'section_template' => 'onpage/onpage-section-buddypress-profile',
217
+ 'section_args' => array(
218
+ 'meta_robots_bp_profile' => $meta_robots_bp_profile,
219
+ ),
220
  );
221
  }
222
 
223
  if ( $buddypress_sections ) {
224
  $this->_render( 'vertical-tab', array(
225
  'tab_id' => 'tab_buddypress',
226
+ 'tab_name' => esc_html__( 'BuddyPress', 'wds' ),
227
  'is_active' => 'tab_buddypress' === $active_tab,
228
  'tab_sections' => $buddypress_sections,
229
  ) );
233
  <?php
234
  $this->_render( 'vertical-tab', array(
235
  'tab_id' => 'tab_settings',
236
+ 'tab_name' => esc_html__( 'Settings', 'wds' ),
237
  'is_active' => 'tab_settings' === $active_tab,
238
  'tab_sections' => array(
239
  array(
250
  </div><!-- end page-title-meta-tabs -->
251
 
252
  </form>
253
+
254
+ <?php $this->_render( 'footer' ); ?>
255
  </div><!-- end wds-page-onpage -->
includes/admin/templates/onpage/onpage-sidenav.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $active_tab = empty( $active_tab ) ? '' : $active_tab;
3
+ $buddypress_active = defined( 'BP_VERSION' );
4
+ $tabs = array(
5
+ array(
6
+ 'id' => 'tab_homepage',
7
+ 'name' => esc_html__( 'Homepage', 'wds' ),
8
+ ),
9
+ array(
10
+ 'id' => 'tab_post_types',
11
+ 'name' => esc_html__( 'Post Types', 'wds' ),
12
+ ),
13
+ array(
14
+ 'id' => 'tab_taxonomies',
15
+ 'name' => esc_html__( 'Taxonomies', 'wds' ),
16
+ ),
17
+ array(
18
+ 'id' => 'tab_archives',
19
+ 'name' => esc_html__( 'Archives', 'wds' ),
20
+ ),
21
+ array(
22
+ 'id' => 'tab_settings',
23
+ 'name' => esc_html__( 'Settings', 'wds' ),
24
+ ),
25
+ );
26
+ if ( $buddypress_active ) {
27
+ $tabs[] = array(
28
+ 'id' => 'tab_buddypress',
29
+ 'name' => esc_html__( 'BuddyPress', 'wds' ),
30
+ );
31
+ }
32
+ $this->_render( 'vertical-tabs-side-nav', array(
33
+ 'active_tab' => $active_tab,
34
+ 'tabs' => $tabs,
35
+ ) );
includes/admin/templates/onpage/onpage-social-meta-tags.php CHANGED
@@ -21,96 +21,84 @@ $single_image = empty( $single_image ) ? false : true;
21
  $title_placeholder = ( ! empty( $_view['options']["title-{$for_type}"] ) ? $_view['options']["title-{$for_type}"] : '' );
22
  $description_placeholder = ( ! empty( $_view['options']["metadesc-{$for_type}"] ) ? $_view['options']["metadesc-{$for_type}"] : '' );
23
  ?>
24
- <div class="wds-toggle-table">
25
- <span class="toggle wds-toggle">
26
- <input
27
- class="toggle-checkbox"
28
- value='1' <?php checked( $section_enabled, true ); ?>
29
- id='<?php echo esc_attr( $section_enabled_field_id ); ?>'
30
- name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $section_enabled_field_id ); ?>]'
31
- type='checkbox' autocomplete="off"/>
32
- <label class="toggle-label" for="<?php echo esc_attr( $section_enabled_field_id ); ?>"></label>
33
- </span>
34
 
35
- <div class="wds-toggle-description">
36
- <label class="wds-label" for="<?php echo esc_attr( $section_enabled_field_id ); ?>">
37
- <?php echo esc_html( $section_title ); ?>
38
- </label>
39
- <p class="wds-label-description">
40
- <?php echo esc_html( $section_description ); ?>
41
- </p>
 
 
 
 
42
 
43
- <div class="wds-table-fields-group wds-toggleable-inside-box">
44
-
45
- <div class="wds-table-fields wds-table-fields-stacked">
46
- <div class="label">
47
- <label for="<?php echo esc_attr( $title_field_id ); ?>" class="wds-label">
48
- <?php esc_html_e( 'Title', 'wds' ); ?>
49
- </label>
50
- </div>
51
- <div class="fields wds-allow-macros">
52
- <input
53
- id='<?php echo esc_attr( $title_field_id ); ?>'
54
- name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $title_field_id ); ?>]'
55
- size='' type='text' class='wds-field'
56
- placeholder="<?php echo esc_attr( $title_placeholder ); ?>"
57
- value='<?php echo esc_attr( $current_title ); ?>'/>
58
- </div>
59
  </div>
 
60
 
61
- <div class="wds-table-fields wds-table-fields-stacked">
62
- <div class="label">
63
- <label for="<?php echo esc_attr( $description_field_id ); ?>" class="wds-label">
64
- <?php esc_html_e( 'Description', 'wds' ); ?>
65
- </label>
66
- </div>
67
- <div class="fields wds-allow-macros">
68
- <textarea
69
- id='<?php echo esc_attr( $description_field_id ); ?>'
70
- name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $description_field_id ); ?>]'
71
- placeholder="<?php echo esc_attr( $description_placeholder ); ?>"
72
- type='text' class='wds-field'><?php echo esc_textarea( $current_description ); ?></textarea>
73
- </div>
74
  </div>
 
75
 
76
- <div class="wds-table-fields wds-table-fields-stacked">
77
- <div class="label">
78
- <label for="<?php echo esc_attr( $images_field_id ); ?>" class="wds-label">
79
- <?php if ( $single_image ): ?>
80
- <?php esc_html_e( 'Default Featured Image', 'wds' ); ?>
81
- <?php else: ?>
82
- <?php esc_html_e( 'Default Featured Images', 'wds' ); ?>
83
- <?php endif; ?>
84
- </label>
85
- </div>
86
- <div
87
- class="fields og-images <?php echo esc_attr( $images_field_id ); ?>"
88
- data-singular="<?php echo $single_image ? 'true' : 'false'; ?>"
89
- data-name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $images_field_id ); ?>]'>
90
 
91
- <div class="wds-has-tooltip add-action-wrapper item"
92
- data-content="<?php esc_attr_e( 'Add featured image', 'wds' ); ?>"
93
- style="<?php echo $single_image && $images_available ? 'display:none;' : ''; ?>">
94
- <a href="#add" id="<?php echo esc_attr( $images_field_id ); ?>" title="<?php esc_attr_e( 'Add image', 'wds' ); ?>"><i class="wds-icon-plus"></i></a>
95
- </div>
96
- <?php foreach ( $current_images as $image ): ?>
97
- <input
 
 
 
98
  name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $images_field_id ); ?>][]'
99
  type='text'
100
  value='<?php echo esc_attr( $image ); ?>'/>
101
- <?php endforeach; ?>
102
- </div>
103
  </div>
104
- <p class="wds-label-description">
105
  <?php if ( $single_image ): ?>
106
- <?php esc_html_e( "This image will be available to use if the post or page being shared doesn't contain an image.", 'wds' ); ?>
107
  <?php else: ?>
108
- <?php esc_html_e( "These images will be available to use if the post or page being shared doesn't contain any images.", 'wds' ); ?>
109
  <?php endif; ?>
110
  </p>
111
-
112
- <?php wp_enqueue_media(); ?>
113
- <?php wp_enqueue_style( 'wds-admin-opengraph' ); ?>
114
  </div>
 
 
115
  </div>
116
  </div>
21
  $title_placeholder = ( ! empty( $_view['options']["title-{$for_type}"] ) ? $_view['options']["title-{$for_type}"] : '' );
22
  $description_placeholder = ( ! empty( $_view['options']["metadesc-{$for_type}"] ) ? $_view['options']["metadesc-{$for_type}"] : '' );
23
  ?>
24
+ <div class="wds-toggleable <?php echo $section_enabled ? '' : 'inactive'; ?>">
25
+ <?php
26
+ $this->_render( 'toggle-item', array(
27
+ 'field_name' => sprintf( '%s[%s]', $option_name, $section_enabled_field_id ),
28
+ 'field_id' => $section_enabled_field_id,
29
+ 'checked' => checked( $section_enabled, true, false ),
30
+ 'item_label' => $section_title,
31
+ 'item_description' => $section_description,
32
+ ) );
33
+ ?>
34
 
35
+ <div class="wds-toggleable-inside sui-border-frame sui-toggle-content">
36
+ <div class="sui-form-field">
37
+ <label for="<?php echo esc_attr( $title_field_id ); ?>" class="sui-label">
38
+ <?php esc_html_e( 'Title', 'wds' ); ?>
39
+ </label>
40
+ <div class="sui-insert-variables wds-allow-macros">
41
+ <input id='<?php echo esc_attr( $title_field_id ); ?>'
42
+ name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $title_field_id ); ?>]'
43
+ size='' type='text' class='sui-form-control'
44
+ placeholder="<?php echo esc_attr( $title_placeholder ); ?>"
45
+ value='<?php echo esc_attr( $current_title ); ?>'/>
46
 
47
+ <?php $this->_render( 'macros-dropdown' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  </div>
49
+ </div>
50
 
51
+ <div class="sui-form-field">
52
+ <label for="<?php echo esc_attr( $description_field_id ); ?>" class="sui-label">
53
+ <?php esc_html_e( 'Description', 'wds' ); ?>
54
+ </label>
55
+ <div class="sui-insert-variables wds-allow-macros">
56
+ <textarea id='<?php echo esc_attr( $description_field_id ); ?>'
57
+ name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $description_field_id ); ?>]'
58
+ placeholder="<?php echo esc_attr( $description_placeholder ); ?>"
59
+ type='text'
60
+ class='sui-form-control'><?php echo esc_textarea( $current_description ); ?></textarea>
61
+
62
+ <?php $this->_render( 'macros-dropdown' ); ?>
 
63
  </div>
64
+ </div>
65
 
66
+ <div class="sui-form-field">
67
+ <label for="<?php echo esc_attr( $images_field_id ); ?>" class="sui-label">
68
+ <?php if ( $single_image ): ?>
69
+ <?php esc_html_e( 'Default Featured Image', 'wds' ); ?>
70
+ <?php else: ?>
71
+ <?php esc_html_e( 'Default Featured Images', 'wds' ); ?>
72
+ <?php endif; ?>
73
+ </label>
74
+ <div class="og-images <?php echo esc_attr( $images_field_id ); ?>"
75
+ data-singular="<?php echo $single_image ? 'true' : 'false'; ?>"
76
+ data-name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $images_field_id ); ?>]'>
 
 
 
77
 
78
+ <div class="add-action-wrapper sui-tooltip"
79
+ data-tooltip="<?php esc_attr_e( 'Add featured image', 'wds' ); ?>"
80
+ style="<?php echo $single_image && $images_available ? 'display:none;' : ''; ?>">
81
+ <a href="#add" id="<?php echo esc_attr( $images_field_id ); ?>"
82
+ title="<?php esc_attr_e( 'Add image', 'wds' ); ?>">
83
+ <i class="sui-icon-upload-cloud" aria-hidden="true"></i>
84
+ </a>
85
+ </div>
86
+ <?php foreach ( $current_images as $image ): ?>
87
+ <input
88
  name='<?php echo esc_attr( $option_name ); ?>[<?php echo esc_attr( $images_field_id ); ?>][]'
89
  type='text'
90
  value='<?php echo esc_attr( $image ); ?>'/>
91
+ <?php endforeach; ?>
 
92
  </div>
93
+ <p class="sui-description">
94
  <?php if ( $single_image ): ?>
95
+ <?php esc_html_e( "Choose featured image that will be used when sharing on Twitter.", 'wds' ); ?>
96
  <?php else: ?>
97
+ <?php esc_html_e( "Choose featured images that will be used when sharing on Facebook or other platforms that support OpenGraph.", 'wds' ); ?>
98
  <?php endif; ?>
99
  </p>
 
 
 
100
  </div>
101
+
102
+ <?php wp_enqueue_media(); ?>
103
  </div>
104
  </div>
includes/admin/templates/onpage/onpage-twitter-disabled.php CHANGED
@@ -1,18 +1,19 @@
1
  <?php
2
  $message = esc_html__( 'Twitter Cards are globally disabled.', 'wds' );
3
  if ( smartcrawl_subsite_setting_page_enabled( 'wds_social' ) ) {
 
4
  $message = sprintf(
5
  esc_html__( '%1$s You can enable them %2$s.', 'wds' ),
6
  $message,
7
  sprintf(
8
  '<a href="%s">%s</a>',
9
- Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL ),
10
  esc_html__( 'here', 'wds' )
11
  )
12
  );
13
  }
14
 
15
  $this->_render( 'notice', array(
16
- 'class' => 'wds-notice-info',
17
  'message' => $message,
18
  ) );
1
  <?php
2
  $message = esc_html__( 'Twitter Cards are globally disabled.', 'wds' );
3
  if ( smartcrawl_subsite_setting_page_enabled( 'wds_social' ) ) {
4
+ $social_page = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_SOCIAL );
5
  $message = sprintf(
6
  esc_html__( '%1$s You can enable them %2$s.', 'wds' ),
7
  $message,
8
  sprintf(
9
  '<a href="%s">%s</a>',
10
+ esc_url_raw( add_query_arg( 'tab', 'tab_twitter_cards', $social_page ) ),
11
  esc_html__( 'here', 'wds' )
12
  )
13
  );
14
  }
15
 
16
  $this->_render( 'notice', array(
17
+ 'class' => 'sui-notice-info',
18
  'message' => $message,
19
  ) );
includes/admin/templates/onpage/onpage-twitter-settings.php CHANGED
@@ -5,7 +5,9 @@
5
  $section_enabled_field_id = 'twitter-active-' . $for_type;
6
  $section_enabled = ! empty( $_view['options'][ $section_enabled_field_id ] ) ? $_view['options'][ $section_enabled_field_id ] : false;
7
  $section_title = __( 'Enable Twitter Cards', 'wds' );
8
- $section_description = __( 'Twitter Cards support enhances how your content appears when shared on Twitter.', 'wds' );
 
 
9
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
10
  $title_field_id = 'twitter-title-' . $for_type;
11
  $current_title = ! empty( $_view['options']["twitter-title-{$for_type}"] )
5
  $section_enabled_field_id = 'twitter-active-' . $for_type;
6
  $section_enabled = ! empty( $_view['options'][ $section_enabled_field_id ] ) ? $_view['options'][ $section_enabled_field_id ] : false;
7
  $section_title = __( 'Enable Twitter Cards', 'wds' );
8
+ $section_description = empty( $section_description )
9
+ ? esc_html__( 'Twitter Cards support enhances how your content appears when shared on Twitter.', 'wds' )
10
+ : $section_description;
11
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
12
  $title_field_id = 'twitter-title-' . $for_type;
13
  $current_title = ! empty( $_view['options']["twitter-title-{$for_type}"] )
includes/admin/templates/onpage/underscore-macros-list.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <div class="insert-macro">
3
- <button class="button-fields-trigger" data-content="{{- Wds.l10n('macros', 'Insert dynamic macro') }}" id="toogle-macro-list-"><i class="wds-icon-plus"></i></button>
4
  <div class="macro-list" style="display: none">
5
  <ul>
6
  {{ _.each(macros, function (desc, macro) { }}
1
  <?php // phpcs:ignoreFile -- underscore template ?>
2
  <div class="insert-macro">
3
+ <button class="button-fields-trigger" data-content="<?php esc_html_e('Insert dynamic macro', 'wds'); ?>" id="toogle-macro-list-"><i class="wds-icon-plus"></i></button>
4
  <div class="macro-list" style="display: none">
5
  <ul>
6
  {{ _.each(macros, function (desc, macro) { }}
includes/admin/templates/page-header.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $title = empty( $title ) ? '' : $title;
3
+ $documentation_chapter = empty( $documentation_chapter ) ? '' : $documentation_chapter;
4
+ $left_actions = empty( $left_actions ) ? '' : $left_actions;
5
+ $left_actions_args = empty( $left_actions_args ) ? array() : $left_actions_args;
6
+ $extra_actions = empty( $extra_actions ) ? '' : $extra_actions;
7
+ $extra_actions_args = empty( $extra_actions_args ) ? array() : $extra_actions_args;
8
+ ?>
9
+ <div class="sui-header">
10
+ <h1 class="sui-header-title"><?php echo esc_html( $title ); ?></h1>
11
+
12
+ <?php if ( $left_actions ): ?>
13
+ <div class="sui-actions-left">
14
+ <?php $this->_render( $left_actions, $left_actions_args ); ?>
15
+ </div>
16
+ <?php endif; ?>
17
+
18
+ <?php if ( $documentation_chapter ): ?>
19
+ <div class="sui-actions-right">
20
+ <?php $this->_render( $extra_actions, $extra_actions_args ); ?>
21
+
22
+ <a target="_blank" class="sui-button sui-button-ghost wds-docs-button"
23
+ href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#<?php echo esc_attr( $documentation_chapter ); ?>">
24
+ <i class="sui-icon-academy"></i>
25
+ <?php esc_html_e( 'View Documentation', 'wds' ); ?>
26
+ </a>
27
+ </div>
28
+ <?php endif; ?>
29
+ </div>
includes/admin/templates/progress-bar.php CHANGED
@@ -1,10 +1,22 @@
1
  <?php
2
  $progress = empty( $progress ) ? 0 : $progress;
 
3
  ?>
4
 
5
- <div class="wds-progress" data-progress="<?php echo (int) $progress; ?>">
6
- <span class="wds-progress-bar-current-percent"><?php echo (int) $progress; ?>%</span>
7
- <div class="wds-progress-bar">
8
- <div class="wds-progress-bar-inside" style="width:<?php echo (int) $progress; ?>%;"></div>
 
 
 
 
 
 
 
 
9
  </div>
10
  </div>
 
 
 
1
  <?php
2
  $progress = empty( $progress ) ? 0 : $progress;
3
+ $progress_state = empty( $progress_state ) ? '' : $progress_state;
4
  ?>
5
 
6
+ <div class="wds-progress sui-progress-block" data-progress="<?php echo (int) $progress; ?>">
7
+ <div class="sui-progress">
8
+ <span class="sui-progress-icon" aria-hidden="true">
9
+ <i class="sui-icon-loader sui-loading"></i>
10
+ </span>
11
+
12
+ <div class="sui-progress-text">
13
+ <span><?php echo (int) $progress; ?>%</span>
14
+ </div>
15
+ <div class="sui-progress-bar">
16
+ <span style="width:<?php echo (int) $progress; ?>%;"></span>
17
+ </div>
18
  </div>
19
  </div>
20
+ <div class="sui-progress-state">
21
+ <span><?php echo esc_html( $progress_state ); ?></span>
22
+ </div>
includes/admin/templates/progress-notice.php CHANGED
@@ -9,20 +9,22 @@ if ( class_exists( 'WPMUDEV_Dashboard' ) && ! empty( WPMUDEV_Dashboard::$site )
9
  }
10
  }
11
  }
12
- $scan_msg = __( "A full scan can take quite a while, especially if you have a large site! Feel free to close this page; we'll send an e-mail to %s once the results are in.", 'wds' );
 
 
 
13
  ?>
14
- <p class="wds-small-text">
15
- <?php if ( ! empty( $dash_email ) && ! empty( $admin_email ) ) { ?>
16
- <?php $admin_email = sprintf( '<a href="mailto: %1$s">%1$s</a>', $admin_email ); ?>
17
- <?php } else { ?>
18
- <?php $admin_email = __( 'your DEV account email', 'wds' ); ?>
19
- <?php } ?>
20
- <?php
21
- printf(
22
- esc_html( $scan_msg ),
23
- wp_kses_post( $admin_email )
24
- );
25
- ?>
26
- <?php esc_html_e( 'You can change that e-mail address if you want, on your DEV account page', 'wds' ); ?>
27
- <a href="https://premium.wpmudev.org/hub/account" target="_blank"><?php esc_html_e( 'here', 'wds' ); ?></a>
28
  </p>
9
  }
10
  }
11
  }
12
+ $message = empty( $message ) ? '' : $message;
13
+ if ( ! $message ) {
14
+ return;
15
+ }
16
  ?>
17
+ <p>
18
+ <small>
19
+ <?php if ( ! empty( $dash_email ) && ! empty( $admin_email ) ) { ?>
20
+ <?php $admin_email = sprintf( '<a href="mailto: %1$s"><strong>%1$s</strong></a>', $admin_email ); ?>
21
+ <?php } else { ?>
22
+ <?php $admin_email = sprintf( '<strong>%1$s</strong>', esc_html__( 'your DEV account email', 'wds' ) ); ?>
23
+ <?php } ?>
24
+
25
+ <?php printf(
26
+ wp_kses_post( $message ),
27
+ wp_kses_post( $admin_email )
28
+ ); ?>
29
+ </small>
 
30
  </p>
includes/admin/templates/quick-edit-robots.php CHANGED
@@ -1,31 +1,38 @@
 
 
 
1
  <fieldset class="inline-edit-col-left">
2
- <div class="inline-edit-col">
3
- <label>
4
- <span class="title metadesc"><?php esc_html_e( 'Meta Description', 'wds' ); ?></span>
5
- <textarea class="ptitle smartcrawl_metadesc" name="wds_metadesc"></textarea>
6
- </label>
7
- </div>
8
- <div class="inline-edit-col long-label">
9
- <label>
10
- <span class="title"><?php esc_html_e( 'Focus keywords', 'wds' ); ?></span>
11
- <span class="input-text-wrap">
12
- <input class="ptitle smartcrawl_focus" type="text" value="" name="wds_focus"/>
13
- </span>
14
- </label>
15
- </div>
16
- <div class="inline-edit-col long-label">
17
- <label>
18
- <span class="title"><?php esc_html_e( 'Other Keywords', 'wds' ); ?></span>
19
- <span class="input-text-wrap">
20
- <input class="ptitle smartcrawl_keywords" type="text" value="" name="wds_keywords"/>
21
- </span>
22
- </label>
23
- </div>
 
 
 
 
 
24
  </fieldset>
25
  <style>
26
  .inline-edit-col .title.metadesc {
27
  display: block;
28
- margin-top: 20px;
29
  width: 100%;
30
  }
31
 
1
+ <?php
2
+ $onpage_allowed = smartcrawl_is_allowed_tab( Smartcrawl_Settings::TAB_ONPAGE );
3
+ ?>
4
  <fieldset class="inline-edit-col-left">
5
+ <?php if ( $onpage_allowed ): ?>
6
+ <div class="inline-edit-col long-label">
7
+ <h4></h4>
8
+ <label>
9
+ <span class="title"><?php esc_html_e( 'Title Tag', 'wds' ); ?></span>
10
+ <span class="input-text-wrap">
11
+ <input class="ptitle smartcrawl_title" type="text" value="" name="wds_title"/>
12
+ </span>
13
+ </label>
14
+ </div>
15
+ <div class="inline-edit-col long-label">
16
+ <label>
17
+ <span class="title metadesc"><?php esc_html_e( 'Meta Description', 'wds' ); ?></span>
18
+ <span class="input-text-wrap">
19
+ <textarea class="ptitle smartcrawl_metadesc" name="wds_metadesc"></textarea>
20
+ </span>
21
+ </label>
22
+ </div>
23
+ <div class="inline-edit-col long-label">
24
+ <label>
25
+ <span class="title"><?php esc_html_e( 'Other Keywords', 'wds' ); ?></span>
26
+ <span class="input-text-wrap">
27
+ <input class="ptitle smartcrawl_keywords" type="text" value="" name="wds_keywords"/>
28
+ </span>
29
+ </label>
30
+ </div>
31
+ <?php endif; ?>
32
  </fieldset>
33
  <style>
34
  .inline-edit-col .title.metadesc {
35
  display: block;
 
36
  width: 100%;
37
  }
38
 
includes/admin/templates/quick-edit-title.php CHANGED
@@ -1,13 +1,13 @@
1
  <fieldset class="inline-edit-col-left" style="clear:left">
2
- <div class="inline-edit-col">
3
  <h4><?php esc_html_e( 'SmartCrawl', 'wds' ); ?></h4>
4
  <label>
5
- <span class="title"><?php esc_html_e( 'Title Tag', 'wds' ); ?></span>
6
  <span class="input-text-wrap">
7
- <input class="ptitle smartcrawl_title" type="text" value="" name="wds_title"/>
8
- <input type="hidden"
9
- value="<?php echo esc_attr( wp_create_nonce( 'wds-metabox-nonce' ) ); ?>"
10
- name="_wds_nonce"/>
11
  </span>
12
  </label>
13
  </div>
1
  <fieldset class="inline-edit-col-left" style="clear:left">
2
+ <div class="inline-edit-col long-label">
3
  <h4><?php esc_html_e( 'SmartCrawl', 'wds' ); ?></h4>
4
  <label>
5
+ <span class="title"><?php esc_html_e( 'Focus keywords', 'wds' ); ?></span>
6
  <span class="input-text-wrap">
7
+ <input class="ptitle smartcrawl_focus" type="text" value="" name="wds_focus"/>
8
+ <input type="hidden"
9
+ value="<?php echo esc_attr( wp_create_nonce( 'wds-metabox-nonce' ) ); ?>"
10
+ name="_wds_nonce"/>
11
  </span>
12
  </label>
13
  </div>
includes/admin/templates/report-vertical-tab.php CHANGED
@@ -1,5 +1,6 @@
1
  <section class="tab wds-report-vertical-tab">
2
  <?php
 
3
  // Required
4
  $tab_id = empty( $tab_id ) ? '' : $tab_id;
5
  $tab_name = empty( $tab_name ) ? '' : $tab_name;
@@ -17,12 +18,6 @@
17
  $is_singular = count( $tab_sections ) === 1;
18
  $smartcrawl_options = Smartcrawl_Settings::get_options();
19
  ?>
20
- <input
21
- type="radio"
22
- name="wds-admin-active-tab"
23
- id="<?php echo esc_attr( $tab_id ); ?>"
24
- value="<?php echo esc_attr( $tab_id ); ?>"
25
- <?php checked( $is_active ); ?> />
26
 
27
  <label for="<?php echo esc_attr( $tab_id ); ?>">
28
  <?php echo esc_html( $tab_name ); ?>
@@ -53,11 +48,6 @@
53
 
54
  <?php if ( $before_output ) : ?>
55
  <?php echo wp_kses( $before_output, smartcrawl_get_allowed_html_for_forms() ); ?>
56
- <input
57
- type="hidden"
58
- name="wds-admin-active-tab"
59
- id="<?php echo esc_attr( $tab_id ); ?>"
60
- value="<?php echo esc_attr( $tab_id ); ?>"/>
61
  <?php endif; ?>
62
 
63
  <?php foreach ( $tab_sections as $section ) : ?>
1
  <section class="tab wds-report-vertical-tab">
2
  <?php
3
+ // TODO: DO we still need a separate report-vertical-tab?
4
  // Required
5
  $tab_id = empty( $tab_id ) ? '' : $tab_id;
6
  $tab_name = empty( $tab_name ) ? '' : $tab_name;
18
  $is_singular = count( $tab_sections ) === 1;
19
  $smartcrawl_options = Smartcrawl_Settings::get_options();
20
  ?>
 
 
 
 
 
 
21
 
22
  <label for="<?php echo esc_attr( $tab_id ); ?>">
23
  <?php echo esc_html( $tab_name ); ?>
48
 
49
  <?php if ( $before_output ) : ?>
50
  <?php echo wp_kses( $before_output, smartcrawl_get_allowed_html_for_forms() ); ?>
 
 
 
 
 
51
  <?php endif; ?>
52
 
53
  <?php foreach ( $tab_sections as $section ) : ?>
includes/admin/templates/seomoz-dashboard-widget.php CHANGED
@@ -1,88 +1,90 @@
1
- <div class="wpmud">
2
- <table class="wds-list-table wds-moz-table">
3
- <thead>
4
- <tr>
5
- <th class="label"><?php esc_html_e( 'Metric', 'wds' ); ?></th>
6
- <th class="result"><?php esc_html_e( 'Value', 'wds' ); ?></th>
7
- </tr>
8
- </thead>
9
- <tbody>
10
- <tr>
11
- <td>
12
- <strong><?php esc_html_e( 'Domain mozRank', 'wds' ); ?></strong><br>
13
- <?php printf( esc_html__( 'Measure of the mozRank %s of the domain in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/mozrank" target="_blank">(?)</a>' ); ?>
14
- </td>
15
- <td>
16
- <?php esc_html_e( '10-point score:', 'wds' ); ?>&nbsp;
17
- <a href="<?php echo esc_attr( $attribution ); ?>"
18
- target="_blank"><?php echo( ! empty( $urlmetrics->fmrp ) ? esc_html( $urlmetrics->fmrp ) : '' ); ?></a>
19
- <br>
20
- <?php esc_html_e( 'Raw score:', 'wds' ); ?>&nbsp;
21
- <a href="<?php echo esc_attr( $attribution ); ?>"
22
- target="_blank"><?php echo( ! empty( $urlmetrics->fmrr ) ? esc_html( $urlmetrics->fmrr ) : '' ); ?></a>
23
- </td>
24
- </tr>
25
- <tr>
26
- <td>
27
- <strong><?php esc_html_e( 'Domain Authority', 'wds' ); ?></strong>
28
- <a href="https://moz.com/learn/seo/domain-authority" target="_blank">(?)</a>
29
- </td>
30
- <td>
31
- <a href="<?php echo esc_attr( $attribution ); ?>"
32
- target="_blank"><?php echo( ! empty( $urlmetrics->pda ) ? esc_html( $urlmetrics->pda ) : '' ); ?></a>
33
- </td>
34
- </tr>
35
- <tr>
36
- <td>
37
- <strong><?php esc_html_e( 'External Links to Homepage', 'wds' ); ?></strong><br>
38
- <?php printf( esc_html__( 'The number of external (from other subdomains), juice passing links %s to the target URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/external-link" target="_blank">(?)</a>' ); ?>
39
- </td>
40
- <td>
41
- <a href="<?php echo esc_attr( $attribution ); ?>"
42
- target="_blank"><?php echo( ! empty( $urlmetrics->ueid ) ? esc_html( $urlmetrics->ueid ) : '' ); ?></a>
43
- </td>
44
- </tr>
45
- <tr>
46
- <td>
47
- <strong><?php esc_html_e( 'Links to Homepage', 'wds' ); ?></strong><br>
48
- <?php printf( esc_html__( 'The number of internal and external, juice and non-juice passing links %s to the target URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/internal-link" target="_blank">(?)</a>' ); ?>
49
- </td>
50
- <td>
51
- <a href="<?php echo esc_attr( $attribution ); ?>"
52
- target="_blank"><?php echo( ! empty( $urlmetrics->uid ) ? esc_html( $urlmetrics->uid ) : '' ); ?></a>
53
- </td>
54
- </tr>
55
- <tr>
56
- <td>
57
- <strong><?php esc_html_e( 'Homepage mozRank', 'wds' ); ?></strong><br>
58
- <?php printf( esc_html__( 'Measure of the mozRank %s of the homepage URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/mozrank" target="_blank">(?)</a>' ); ?>
59
- </td>
60
- <td>
61
- <?php esc_html_e( '10-point score:', 'wds' ); ?>&nbsp;
62
- <a href="<?php echo esc_attr( $attribution ); ?>"
63
- target="_blank"><?php echo( ! empty( $urlmetrics->umrp ) ? esc_html( $urlmetrics->umrp ) : '' ); ?></a>
64
- <br>
65
- <?php esc_html_e( 'Raw score:', 'wds' ); ?>&nbsp;
66
- <a href="<?php echo esc_attr( $attribution ); ?>"
67
- target="_blank"><?php echo( ! empty( $urlmetrics->umrr ) ? esc_html( $urlmetrics->umrr ) : '' ); ?></a>
68
- </td>
69
- </tr>
70
- <tr>
71
- <td>
72
- <strong><?php esc_html_e( 'Homepage Authority', 'wds' ); ?></strong>
73
- <a href="https://moz.com/learn/seo/page-authority" target="_blank">(?)</a>
74
- </td>
75
- <td>
76
- <a href="<?php echo esc_attr( $attribution ); ?>"
77
- target="_blank"><?php echo( ! empty( $urlmetrics->upa ) ? esc_html( $urlmetrics->upa ) : '' ); ?></a>
78
- </td>
79
- </tr>
80
- </tbody>
81
- <tfoot>
82
- <tr>
83
- <th class="label"><?php esc_html_e( 'Metric', 'wds' ); ?></th>
84
- <th class="result"><?php esc_html_e( 'Value', 'wds' ); ?></th>
85
- </tr>
86
- </tfoot>
87
- </table>
88
- </div>
 
 
1
+ <?php
2
+ $attribution = empty( $attribution ) ? '#' : $attribution;
3
+ $urlmetrics = empty( $urlmetrics ) ? new stdClass() : $urlmetrics;
4
+ ?>
5
+ <table class="sui-table">
6
+ <thead>
7
+ <tr>
8
+ <th class="label"><?php esc_html_e( 'Metric', 'wds' ); ?></th>
9
+ <th class="result"><?php esc_html_e( 'Value', 'wds' ); ?></th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <tr>
14
+ <td>
15
+ <strong><?php esc_html_e( 'Domain mozRank', 'wds' ); ?></strong><br>
16
+ <?php printf( esc_html__( 'Measure of the mozRank %s of the domain in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/mozrank" target="_blank">(?)</a>' ); ?>
17
+ </td>
18
+ <td>
19
+ <?php esc_html_e( '10-point score:', 'wds' ); ?>&nbsp;
20
+ <a href="<?php echo esc_attr( $attribution ); ?>"
21
+ target="_blank"><?php echo( ! empty( $urlmetrics->fmrp ) ? esc_html( $urlmetrics->fmrp ) : '' ); ?></a>
22
+ <br>
23
+ <?php esc_html_e( 'Raw score:', 'wds' ); ?>&nbsp;
24
+ <a href="<?php echo esc_attr( $attribution ); ?>"
25
+ target="_blank"><?php echo( ! empty( $urlmetrics->fmrr ) ? esc_html( $urlmetrics->fmrr ) : '' ); ?></a>
26
+ </td>
27
+ </tr>
28
+ <tr>
29
+ <td>
30
+ <strong><?php esc_html_e( 'Domain Authority', 'wds' ); ?></strong>
31
+ <a href="https://moz.com/learn/seo/domain-authority" target="_blank">(?)</a>
32
+ </td>
33
+ <td>
34
+ <a href="<?php echo esc_attr( $attribution ); ?>"
35
+ target="_blank"><?php echo( ! empty( $urlmetrics->pda ) ? esc_html( $urlmetrics->pda ) : '' ); ?></a>
36
+ </td>
37
+ </tr>
38
+ <tr>
39
+ <td>
40
+ <strong><?php esc_html_e( 'External Links to Homepage', 'wds' ); ?></strong><br>
41
+ <?php printf( esc_html__( 'The number of external (from other subdomains), juice passing links %s to the target URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/external-link" target="_blank">(?)</a>' ); ?>
42
+ </td>
43
+ <td>
44
+ <a href="<?php echo esc_attr( $attribution ); ?>"
45
+ target="_blank"><?php echo( ! empty( $urlmetrics->ueid ) ? esc_html( $urlmetrics->ueid ) : '' ); ?></a>
46
+ </td>
47
+ </tr>
48
+ <tr>
49
+ <td>
50
+ <strong><?php esc_html_e( 'Links to Homepage', 'wds' ); ?></strong><br>
51
+ <?php printf( esc_html__( 'The number of internal and external, juice and non-juice passing links %s to the target URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/internal-link" target="_blank">(?)</a>' ); ?>
52
+ </td>
53
+ <td>
54
+ <a href="<?php echo esc_attr( $attribution ); ?>"
55
+ target="_blank"><?php echo( ! empty( $urlmetrics->uid ) ? esc_html( $urlmetrics->uid ) : '' ); ?></a>
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <td>
60
+ <strong><?php esc_html_e( 'Homepage mozRank', 'wds' ); ?></strong><br>
61
+ <?php printf( esc_html__( 'Measure of the mozRank %s of the homepage URL in the Linkscape index', 'wds' ), '<a href="https://moz.com/learn/seo/mozrank" target="_blank">(?)</a>' ); ?>
62
+ </td>
63
+ <td>
64
+ <?php esc_html_e( '10-point score:', 'wds' ); ?>&nbsp;
65
+ <a href="<?php echo esc_attr( $attribution ); ?>"
66
+ target="_blank"><?php echo( ! empty( $urlmetrics->umrp ) ? esc_html( $urlmetrics->umrp ) : '' ); ?></a>
67
+ <br>
68
+ <?php esc_html_e( 'Raw score:', 'wds' ); ?>&nbsp;
69
+ <a href="<?php echo esc_attr( $attribution ); ?>"
70
+ target="_blank"><?php echo( ! empty( $urlmetrics->umrr ) ? esc_html( $urlmetrics->umrr ) : '' ); ?></a>
71
+ </td>
72
+ </tr>
73
+ <tr>
74
+ <td>
75
+ <strong><?php esc_html_e( 'Homepage Authority', 'wds' ); ?></strong>
76
+ <a href="https://moz.com/learn/seo/page-authority" target="_blank">(?)</a>
77
+ </td>
78
+ <td>
79
+ <a href="<?php echo esc_attr( $attribution ); ?>"
80
+ target="_blank"><?php echo( ! empty( $urlmetrics->upa ) ? esc_html( $urlmetrics->upa ) : '' ); ?></a>
81
+ </td>
82
+ </tr>
83
+ </tbody>
84
+ <tfoot>
85
+ <tr>
86
+ <th class="label"><?php esc_html_e( 'Metric', 'wds' ); ?></th>
87
+ <th class="result"><?php esc_html_e( 'Value', 'wds' ); ?></th>
88
+ </tr>
89
+ </tfoot>
90
+ </table>
includes/admin/templates/settings/import-status-modal.php CHANGED
@@ -1,8 +1,5 @@
1
- <dialog class="wds-modal wds-import-status-dialog"
2
- id="wds-import-status"
3
- title="<?php esc_attr_e( 'Import', 'wds' ); ?>">
4
-
5
- <div class="wds-import-placeholder">
6
- <?php $this->_render( 'settings/underscore-import-options' ); ?>
7
- </div>
8
- </dialog>
1
+ <?php $this->_render( 'modal', array(
2
+ 'id' => 'wds-import-status',
3
+ 'title' => esc_html__( 'Import', 'wds' ),
4
+ 'body_template' => 'settings/underscore-import-options',
5
+ ) );
 
 
 
includes/admin/templates/settings/settings-custom-meta-tag.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php $value = empty( $value ) ? '' : $value; ?>
2
  <div class="wds-custom-meta-tag">
3
  <input type="text"
 
4
  value="<?php echo esc_attr( $value ); ?>"
5
  placeholder="<?php esc_html_e( 'Paste your meta tag here', 'wds' ); ?>"
6
  name="<?php echo esc_attr( $_view['option_name'] ); ?>[additional-metas][]"/>
1
  <?php $value = empty( $value ) ? '' : $value; ?>
2
  <div class="wds-custom-meta-tag">
3
  <input type="text"
4
+ class="sui-form-control"
5
  value="<?php echo esc_attr( $value ); ?>"
6
  placeholder="<?php esc_html_e( 'Paste your meta tag here', 'wds' ); ?>"
7
  name="<?php echo esc_attr( $_view['option_name'] ); ?>[additional-metas][]"/>
includes/admin/templates/settings/settings-section-general.php CHANGED
@@ -10,6 +10,7 @@ $verification_pages = empty( $verification_pages ) ? array() : $verification_pag
10
  $smartcrawl_options = Smartcrawl_Settings::get_options();
11
  $sitemap_options = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_SITEMAP );
12
  $plugin_modules = empty( $plugin_modules ) ? array() : $plugin_modules;
 
13
  ?>
14
 
15
  <?php
@@ -22,55 +23,36 @@ $this->_render( 'toggle-group', array(
22
 
23
  <?php if ( is_multisite() && is_network_admin() ) : ?>
24
  <input type="hidden" name="<?php echo esc_attr( $_view['option_name'] ); ?>[save_blog_tabs]" value="1"/>
25
- <div class="wds-table-fields wds-separator-top">
26
- <div class="label">
27
- <label class="wds-label"><?php esc_html_e( 'Site Owner Permissions', 'wds' ); ?></label>
28
- <p class="wds-label-description">
29
  <?php esc_html_e( 'Use this section to choose what sections of this plugin will be accessible to Site Admins on your Network.', 'wds' ); ?>
30
  </p>
31
  </div>
32
 
33
- <div class="fields">
34
- <div class="wds-toggle-table">
35
- <span class="toggle wds-toggle">
36
- <input type="checkbox"
37
- class="toggle-checkbox"
38
- value="yes"
39
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[wds_sitewide_mode]"
40
- id="wds_sitewide_mode"
41
- <?php echo isset( $wds_sitewide_mode ) ? checked( $wds_sitewide_mode, true, false ) : ''; ?>
42
- />
43
- <label class="toggle-label" for="wds_sitewide_mode"></label>
44
- </span>
45
-
46
- <div class="wds-toggle-description">
47
- <label
48
- class="wds-label"
49
- for="wds_sitewide_mode"><?php esc_html_e( 'Sitewide mode (network level changes only)', 'wds' ); ?>
50
- </label>
51
- </div>
52
- </div>
53
- <?php
54
  foreach ( $slugs as $item => $label ) {
55
  $checked = ( ! empty( $blog_tabs[ $item ] ) ) ? 'checked' : '';
56
  $presence_slug = preg_replace( '/^wds_/', '', $item );
57
  ?>
58
- <div class="wds-toggle-table">
59
- <span class="toggle wds-toggle">
60
- <input type="checkbox"
61
- class="toggle-checkbox"
62
- value="yes"
63
- data-prereq="<?php echo esc_attr( $presence_slug ); ?>"
64
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[wds_blog_tabs][<?php echo esc_attr( $item ); ?>]"
65
- id="wds_blog_tabs-<?php echo esc_attr( $item ); ?>"
66
- <?php echo esc_attr( $checked ); ?>
67
- />
68
- <label class="toggle-label" for="wds_blog_tabs-<?php echo esc_attr( $item ); ?>"></label>
69
- </span>
70
- <div class="wds-toggle-description">
71
- <label class="wds-label"
72
- for="wds_blog_tabs-<?php echo esc_attr( $item ); ?>"><?php echo esc_html( $label ); ?></label>
73
- </div>
74
  </div>
75
  <?php
76
  }
@@ -123,80 +105,91 @@ $this->_render( 'toggle-group', array(
123
  ) );
124
  ?>
125
 
126
- <div class="wds-table-fields wds-separator-top">
127
- <div class="label">
128
- <label class="wds-label"><?php esc_html_e( 'Search engines', 'wds' ); ?></label>
129
- <p class="wds-label-description"><?php esc_html_e( 'This tool will add the meta tags required by search engines to verify your site with their SEO management tools to your websites <head> tag.', 'wds' ); ?></p>
130
  </div>
131
- <div class="fields">
132
- <?php
133
- $value = isset( $sitemap_options['verification-google-meta'] ) ? $sitemap_options['verification-google-meta'] : '';
134
- ?>
135
- <label for="verification-google" class="wds-label"><?php esc_html_e( 'Google Verification', 'wds' ); ?></label>
136
- <div class="wds-label-description">
137
- <?php esc_html_e( 'Paste the full meta tag from Google. The value looks like this:', 'wds' ); ?>
138
- <pre
139
- class="wds-meta-tags-example"><?php echo esc_html( '<meta name="google-site-verification" content="+nxGUDJ4QpAZ5l9Bsjdi102tLVC21AIh5d1Nl23908vVuFHs34=" />' ); ?></pre>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  </div>
141
- <input
142
- id='verification-google'
143
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[verification-google-meta]'
144
- type='text'
145
- class='wds-field'
146
- value='<?php echo esc_attr( $value ); ?>'>
147
-
148
- <?php
149
- $value = isset( $sitemap_options['verification-bing-meta'] ) ? $sitemap_options['verification-bing-meta'] : '';
150
- ?>
151
- <label for="verification-bing" class="wds-label"><?php esc_html_e( 'Bing Verification', 'wds' ); ?></label>
152
- <div class="wds-label-description">
153
- <?php esc_html_e( 'Paste the full meta tag from Bing. The value looks like this:', 'wds' ); ?>
154
- <pre
155
- class="wds-meta-tags-example"><?php echo esc_html( '<meta name="msvalidate.01" content="J3P85HC9105H840J1U8117603269HA13" />' ); ?></pre>
 
 
 
 
156
  </div>
157
- <input
158
- id='verification-bing'
159
- name='<?php echo esc_attr( $_view['option_name'] ); ?>[verification-bing-meta]'
160
- type='text'
161
- class='wds-field'
162
- value='<?php echo esc_attr( $value ); ?>'>
163
-
164
- <label for="verification-pages"
165
- class="wds-label"><?php esc_html_e( 'Add verification code to', 'wds' ); ?></label>
166
- <select id="verification-pages"
167
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[verification-pages]"
168
- class="select-container"
169
- style="width: 100%;">
170
- <?php foreach ( $verification_pages as $item => $label ) : ?>
171
- <?php
172
- $selected = isset( $sitemap_options['verification-pages'] ) && $sitemap_options['verification-pages'] === $item ? 'selected' : '';
173
- ?>
174
- <option
175
- value="<?php echo esc_attr( $item ); ?>"
176
- <?php echo esc_attr( $selected ); ?>>
177
- <?php echo esc_html( $label ); ?>
178
- </option>
179
- <?php endforeach; ?>
180
- </select>
181
-
182
- <div class="wds-custom-meta-tags">
183
- <label for="verification-google" class="wds-label"><?php esc_html_e( 'Custom meta tags', 'wds' ); ?></label>
184
- <p class="wds-label-description"><?php esc_html_e( 'Have more meta tags you want to add? Add as many as you like.', 'wds' ); ?></p>
185
-
186
- <?php if ( ! empty( $sitemap_options['additional-metas'] ) && is_array( $sitemap_options['additional-metas'] ) ) : ?>
187
- <?php
188
- foreach ( $sitemap_options['additional-metas'] as $custom_value ) {
189
- $this->_render( 'settings/settings-custom-meta-tag', array(
190
- 'value' => $custom_value,
191
- ) );
192
- }
193
- ?>
194
- <?php endif; ?>
195
 
196
- <?php $this->_render( 'settings/settings-custom-meta-tag' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
- <button type="button"
199
- class="button button-dark button-dark-o"><?php esc_html_e( 'Add Another', 'wds' ); ?></button>
 
 
 
 
 
200
  </div>
201
  </div>
202
  </div>
10
  $smartcrawl_options = Smartcrawl_Settings::get_options();
11
  $sitemap_options = Smartcrawl_Settings::get_component_options( Smartcrawl_Settings::COMP_SITEMAP );
12
  $plugin_modules = empty( $plugin_modules ) ? array() : $plugin_modules;
13
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
14
  ?>
15
 
16
  <?php
23
 
24
  <?php if ( is_multisite() && is_network_admin() ) : ?>
25
  <input type="hidden" name="<?php echo esc_attr( $_view['option_name'] ); ?>[save_blog_tabs]" value="1"/>
26
+ <div class="sui-box-settings-row">
27
+ <div class="sui-box-settings-col-1">
28
+ <label class="sui-settings-label"><?php esc_html_e( 'Site Owner Permissions', 'wds' ); ?></label>
29
+ <p class="sui-description">
30
  <?php esc_html_e( 'Use this section to choose what sections of this plugin will be accessible to Site Admins on your Network.', 'wds' ); ?>
31
  </p>
32
  </div>
33
 
34
+ <div class="sui-box-settings-col-2">
35
+ <?php $this->_render( 'toggle-item', array(
36
+ 'item_value' => 'yes',
37
+ 'field_name' => sprintf( '%s[wds_sitewide_mode]', $option_name ),
38
+ 'field_id' => sprintf( '%s[wds_sitewide_mode]', $option_name ),
39
+ 'item_label' => esc_html__( 'Sitewide mode (network level changes only)', 'wds' ),
40
+ 'checked' => isset( $wds_sitewide_mode ) ? checked( $wds_sitewide_mode, true, false ) : '',
41
+ ) );
42
+
 
 
 
 
 
 
 
 
 
 
 
 
43
  foreach ( $slugs as $item => $label ) {
44
  $checked = ( ! empty( $blog_tabs[ $item ] ) ) ? 'checked' : '';
45
  $presence_slug = preg_replace( '/^wds_/', '', $item );
46
  ?>
47
+
48
+ <div data-prereq="<?php echo esc_attr( $presence_slug ); ?>">
49
+ <?php $this->_render( 'toggle-item', array(
50
+ 'item_value' => 'yes',
51
+ 'field_name' => sprintf( '%s[wds_blog_tabs][%s]', $option_name, $item ),
52
+ 'field_id' => sprintf( '%s[wds_blog_tabs][%s]', $option_name, $item ),
53
+ 'item_label' => $label,
54
+ 'checked' => $checked,
55
+ ) ); ?>
 
 
 
 
 
 
 
56
  </div>
57
  <?php
58
  }
105
  ) );
106
  ?>
107
 
108
+ <div class="sui-box-settings-row wds-verification-tags">
109
+ <div class="sui-box-settings-col-1">
110
+ <label class="sui-settings-label"><?php esc_html_e( 'Search engines', 'wds' ); ?></label>
111
+ <p class="sui-description"><?php esc_html_e( 'This tool will add the meta tags required by search engines to verify your site with their SEO management tools to your websites <head> tag.', 'wds' ); ?></p>
112
  </div>
113
+ <div class="sui-box-settings-col-2">
114
+ <div class="sui-form-field">
115
+ <?php
116
+ $value = isset( $sitemap_options['verification-google-meta'] ) ? $sitemap_options['verification-google-meta'] : '';
117
+ ?>
118
+ <label for="verification-google"
119
+ class="sui-settings-label"><?php esc_html_e( 'Google Verification', 'wds' ); ?></label>
120
+ <div class="sui-description">
121
+ <?php esc_html_e( 'Paste the full meta tag from Google.', 'wds' ); ?>
122
+ </div>
123
+ <input id='verification-google'
124
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[verification-google-meta]'
125
+ type='text'
126
+ placeholder="<?php echo esc_attr( 'E.g. <meta name="google-site-verification" content="...' ); ?>"
127
+ class='sui-form-control'
128
+ value='<?php echo esc_attr( $value ); ?>'>
129
+ </div>
130
+
131
+ <div class="sui-form-field">
132
+ <?php
133
+ $value = isset( $sitemap_options['verification-bing-meta'] ) ? $sitemap_options['verification-bing-meta'] : '';
134
+ ?>
135
+ <label for="verification-bing"
136
+ class="sui-settings-label"><?php esc_html_e( 'Bing Verification', 'wds' ); ?></label>
137
+ <div class="sui-description">
138
+ <?php esc_html_e( 'Paste the full meta tag from Bing.', 'wds' ); ?>
139
+ </div>
140
+ <input id='verification-bing'
141
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[verification-bing-meta]'
142
+ type='text'
143
+ class='sui-form-control'
144
+ placeholder="<?php echo esc_attr( 'E.g. <meta name="msvalidate.01" content="...' ); ?>"
145
+ value='<?php echo esc_attr( $value ); ?>'>
146
  </div>
147
+
148
+ <div class="sui-form-field">
149
+ <label for="verification-pages"
150
+ class="sui-settings-label"><?php esc_html_e( 'Add verification code to', 'wds' ); ?></label>
151
+ <select id="verification-pages"
152
+ data-minimum-results-for-search="-1"
153
+ name="<?php echo esc_attr( $_view['option_name'] ); ?>[verification-pages]"
154
+ class="sui-select">
155
+ <?php foreach ( $verification_pages as $item => $label ) : ?>
156
+ <?php
157
+ $selected = isset( $sitemap_options['verification-pages'] ) && $sitemap_options['verification-pages'] === $item ? 'selected' : '';
158
+ ?>
159
+ <option
160
+ value="<?php echo esc_attr( $item ); ?>"
161
+ <?php echo esc_attr( $selected ); ?>>
162
+ <?php echo esc_html( $label ); ?>
163
+ </option>
164
+ <?php endforeach; ?>
165
+ </select>
166
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
 
168
+ <div class="sui-form-field">
169
+ <div class="wds-custom-meta-tags">
170
+ <label for="verification-google"
171
+ class="sui-settings-label"><?php esc_html_e( 'Custom meta tags', 'wds' ); ?></label>
172
+ <span class="sui-description"><?php esc_html_e( 'Have more meta tags you want to add? Add as many as you like.', 'wds' ); ?></span>
173
+
174
+ <?php if ( ! empty( $sitemap_options['additional-metas'] ) && is_array( $sitemap_options['additional-metas'] ) ) : ?>
175
+ <?php
176
+ foreach ( $sitemap_options['additional-metas'] as $custom_value ) {
177
+ $this->_render( 'settings/settings-custom-meta-tag', array(
178
+ 'value' => $custom_value,
179
+ ) );
180
+ }
181
+ ?>
182
+ <?php endif; ?>
183
+
184
+ <?php $this->_render( 'settings/settings-custom-meta-tag' ); ?>
185
 
186
+ <button type="button"
187
+ class="sui-button sui-button-ghost">
188
+ <i class="sui-icon-plus" aria-hidden="true"></i>
189
+
190
+ <?php esc_html_e( 'Add Another', 'wds' ); ?>
191
+ </button>
192
+ </div>
193
  </div>
194
  </div>
195
  </div>
includes/admin/templates/settings/settings-section-import-export.php CHANGED
@@ -1,67 +1,92 @@
1
  <?php wp_nonce_field( 'wds-io-nonce', '_wds_nonce' ); ?>
2
  <div class="wds-io">
3
- <div class="wds-table-fields">
4
- <div class="label">
5
- <label class="wds-label"><?php esc_html_e( 'Export', 'wds' ); ?></label>
6
- <p class="wds-label-description"><?php esc_html_e( 'Export your full SmartCrawl configuration to use on another site.', 'wds' ); ?></p>
7
  </div>
8
- <div class="fields wds-io wds-export">
9
- <button name="io-action" value="export"
10
- class="button button-dark-o"><?php esc_html_e( 'Export', 'wds' ); ?></button>
11
- </div>
12
- </div>
13
-
14
- <div class="wds-table-fields wds-separator-top">
15
- <div class="label">
16
- <label class="wds-label"><?php esc_html_e( 'Import', 'wds' ); ?></label>
17
- <p class="wds-label-description"><?php esc_html_e( 'Use this tool to import your SmartCrawl settings from another site.', 'wds' ); ?></p>
18
- </div>
19
- <div class="fields wds-io wds-import">
20
  <div>
21
- <label class="wds-label"><?php esc_html_e( 'SmartCrawl', 'wds' ); ?></label>
22
- <p class="wds-label-description">
23
  <?php esc_html_e( 'Import your exported SmartCrawl XML settings file.', 'wds' ); ?>
24
- </p>
25
 
26
- <div class="wds-styleable-file-input">
27
  <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo esc_attr( wp_max_upload_size() ); ?>"/>
28
  <input id="wds_import_json" type="file" name="wds_import_json"/>
29
- <input type="text" readonly/>
30
- <label for="wds_import_json"
31
- class="button button-dark-o"><?php esc_html_e( 'Select File', 'wds' ); ?></label>
 
 
 
 
 
 
 
32
  </div>
33
  <button name="io-action" value="import"
34
- class="button button-dark"><?php esc_html_e( 'Import', 'wds' ); ?></button>
 
 
 
 
35
  </div>
36
  <?php if ( is_main_site() ): ?>
37
  <div class="wds-separator-top">
38
- <label class="wds-label"><?php esc_html_e( 'Third Party', 'wds' ); ?></label>
39
- <p class="wds-label-description">
40
  <?php esc_html_e( 'Automatically import your SEO configuration from other SEO plugins.', 'wds' ); ?>
41
  </p>
42
- <div class="wds-third-party-plugins">
43
- <div class="wds-yoast wds-third-party-plugin">
44
- <div class="wds-third-party-plugin-name"><?php esc_html_e( 'Yoast SEO', 'wds' ); ?></div>
45
- <div class="wds-third-party-plugin-button">
46
- <button
47
- class="button button-dark button-small"><?php esc_html_e( 'Import', 'wds' ); ?></button>
48
- </div>
49
- </div>
50
- <div class="wds-aioseop wds-third-party-plugin">
51
- <div
52
- class="wds-third-party-plugin-name"><?php esc_html_e( 'All In One SEO', 'wds' ); ?></div>
53
- <div class="wds-third-party-plugin-button">
54
- <button
55
- class="button button-dark button-small"><?php esc_html_e( 'Import', 'wds' ); ?></button>
56
- </div>
57
- </div>
58
- </div>
59
- <p class="wds-label-description">
 
 
 
 
 
 
 
 
 
 
60
  <?php esc_html_e( 'Automatically import your SEO configuration from other SEO plugins. Note: This will override all of your current settings. We recommend exporting your current settings first, just in case.', 'wds' ); ?>
61
  </p>
62
  </div>
63
  <?php endif; ?>
64
  </div>
65
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  </div>
67
  <?php $this->_render( 'settings/import-status-modal' ); ?>
1
  <?php wp_nonce_field( 'wds-io-nonce', '_wds_nonce' ); ?>
2
  <div class="wds-io">
3
+ <div class="sui-box-settings-row">
4
+ <div class="sui-box-settings-col-1">
5
+ <label class="sui-settings-label"><?php esc_html_e( 'Import', 'wds' ); ?></label>
6
+ <p class="sui-description"><?php esc_html_e( 'Use this tool to import your SmartCrawl settings from another site.', 'wds' ); ?></p>
7
  </div>
8
+ <div class="sui-box-settings-col-2 wds-io wds-import">
 
 
 
 
 
 
 
 
 
 
 
9
  <div>
10
+ <label class="sui-settings-label"><?php esc_html_e( 'SmartCrawl', 'wds' ); ?></label>
11
+ <span class="sui-description">
12
  <?php esc_html_e( 'Import your exported SmartCrawl XML settings file.', 'wds' ); ?>
13
+ </span>
14
 
15
+ <div class="sui-upload">
16
  <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo esc_attr( wp_max_upload_size() ); ?>"/>
17
  <input id="wds_import_json" type="file" name="wds_import_json"/>
18
+ <label class="sui-upload-button" for="wds_import_json">
19
+ <i class="sui-icon-upload-cloud" aria-hidden="true"></i>
20
+ <?php esc_html_e( 'Upload File', 'wds' ); ?>
21
+ </label>
22
+ <div class="sui-upload-file">
23
+ <span></span>
24
+ <button aria-label="<?php esc_html_e( 'Remove file', 'wds' ); ?>">
25
+ <i class="sui-icon-close" aria-hidden="true"></i>
26
+ </button>
27
+ </div>
28
  </div>
29
  <button name="io-action" value="import"
30
+ class="sui-button">
31
+ <i class="sui-icon-download-cloud" aria-hidden="true"></i>
32
+
33
+ <?php esc_html_e( 'Import', 'wds' ); ?>
34
+ </button>
35
  </div>
36
  <?php if ( is_main_site() ): ?>
37
  <div class="wds-separator-top">
38
+ <label class="sui-settings-label"><?php esc_html_e( 'Third Party', 'wds' ); ?></label>
39
+ <p class="sui-description">
40
  <?php esc_html_e( 'Automatically import your SEO configuration from other SEO plugins.', 'wds' ); ?>
41
  </p>
42
+
43
+ <table class="sui-table">
44
+ <tr class="wds-yoast">
45
+ <td>
46
+ <strong><?php esc_html_e( 'Yoast SEO', 'wds' ); ?></strong>
47
+ </td>
48
+ <td>
49
+ <button type="button" class="sui-button">
50
+ <i class="sui-icon-download-cloud" aria-hidden="true"></i>
51
+
52
+ <?php esc_html_e( 'Import', 'wds' ); ?>
53
+ </button>
54
+ </td>
55
+ </tr>
56
+ <tr class="wds-aioseop">
57
+ <td>
58
+ <strong><?php esc_html_e( 'All In One SEO', 'wds' ); ?></strong>
59
+ </td>
60
+ <td>
61
+ <button type="button" class="sui-button">
62
+ <i class="sui-icon-download-cloud" aria-hidden="true"></i>
63
+
64
+ <?php esc_html_e( 'Import', 'wds' ); ?>
65
+ </button>
66
+ </td>
67
+ </tr>
68
+ </table>
69
+ <p class="sui-description">
70
  <?php esc_html_e( 'Automatically import your SEO configuration from other SEO plugins. Note: This will override all of your current settings. We recommend exporting your current settings first, just in case.', 'wds' ); ?>
71
  </p>
72
  </div>
73
  <?php endif; ?>
74
  </div>
75
  </div>
76
+
77
+ <div class="sui-box-settings-row">
78
+ <div class="sui-box-settings-col-1">
79
+ <label class="sui-settings-label"><?php esc_html_e( 'Export', 'wds' ); ?></label>
80
+ <p class="sui-description"><?php esc_html_e( 'Export your full SmartCrawl configuration to use on another site.', 'wds' ); ?></p>
81
+ </div>
82
+ <div class="sui-box-settings-col-2">
83
+ <button name="io-action" value="export"
84
+ class="sui-button sui-button-ghost">
85
+ <i class="sui-icon-download-cloud" aria-hidden="true"></i>
86
+
87
+ <?php esc_html_e( 'Export', 'wds' ); ?>
88
+ </button>
89
+ </div>
90
+ </div>
91
  </div>
92
  <?php $this->_render( 'settings/import-status-modal' ); ?>
includes/admin/templates/settings/settings-section-user-roles.php CHANGED
@@ -4,82 +4,76 @@ $seo_metabox_301_permission_level = empty( $seo_metabox_301_permission_level ) ?
4
  $urlmetrics_metabox_permission_level = empty( $urlmetrics_metabox_permission_level ) ? array() : $urlmetrics_metabox_permission_level;
5
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
6
  ?>
7
- <input type="hidden" name="<?php echo esc_attr( $option_name ); ?>[saving_user_roles]" value="1"/>
8
- <div class="wds-table-fields">
9
- <div class="label">
10
- <label class="wds-label"><?php esc_html_e( 'Access', 'wds' ); ?></label>
11
  </div>
12
- <div class="fields">
13
- <div>
14
- <label for="seo_metabox_permission_level"
15
- class="wds-label"><?php esc_html_e( 'In page SEO meta box', 'wds' ); ?></label>
16
- <p class="wds-label-description"><?php esc_html_e( 'Choose what user level you want to be able to edit individual post and page meta tags.', 'wds' ); ?></p>
17
 
18
- <select id="seo_metabox_permission_level"
19
- name="<?php echo esc_attr( $option_name ); ?>[seo_metabox_permission_level][]"
20
- class="select-container"
21
- style="width: 100%;">
22
- <?php foreach ( $seo_metabox_permission_level as $item => $label ) : ?>
23
- <?php
24
- $selected = ! empty( $_view['options']['seo_metabox_permission_level'] ) && is_array( $_view['options']['seo_metabox_permission_level'] )
25
- ? ( in_array( $item, $_view['options']['seo_metabox_permission_level'], true ) ? "selected" : '' ) // New
26
- : ( $_view['options']['seo_metabox_permission_level'] === $item ? "selected" : '' );
27
- ?>
28
- <option
29
- <?php echo esc_attr( $selected ); ?>
 
 
 
 
30
  value="<?php echo esc_attr( $item ); ?>">
31
- <?php echo esc_html( $label ); ?>
32
- </option>
33
- <?php endforeach; ?>
34
- </select>
35
- </div>
36
 
37
- <div class="wds-separator-top">
38
- <label for="seo_metabox_301_permission_level"
39
- class="wds-label"><?php esc_html_e( '301 Redirections', 'wds' ); ?></label>
40
- <p class="wds-label-description"><?php esc_html_e( 'Choose what user level has the ability to add 301 redirects to individual posts and pages.', 'wds' ); ?></p>
41
 
42
- <select id="seo_metabox_301_permission_level"
43
- name="<?php echo esc_attr( $option_name ); ?>[seo_metabox_301_permission_level][]"
44
- class="select-container"
45
- style="width: 100%;">
46
- <?php foreach ( $seo_metabox_301_permission_level as $item => $label ) { ?>
47
- <?php
48
- $selected = ! empty( $_view['options']['seo_metabox_301_permission_level'] ) && is_array( $_view['options']['seo_metabox_301_permission_level'] )
49
- ? ( in_array( $item, $_view['options']['seo_metabox_301_permission_level'], true ) ? "selected" : '' ) // New
50
- : ( $_view['options']['seo_metabox_301_permission_level'] === $item ? "selected" : '' );
51
- ?>
52
- <option
53
- <?php echo esc_attr( $selected ); ?>
54
  value="<?php echo esc_attr( $item ); ?>">
55
- <?php echo esc_html( $label ); ?>
56
- </option>
57
- <?php } ?>
58
- </select>
59
- </div>
60
 
61
- <div class="wds-separator-top">
62
- <label for="urlmetrics_metabox_permission_level"
63
- class="wds-label"><?php esc_html_e( 'Show Moz data to roles', 'wds' ); ?></label>
64
- <p class="wds-label-description"><?php esc_html_e( 'Choose what user level gets to view the Moz data.', 'wds' ); ?></p>
65
 
66
- <select id="urlmetrics_metabox_permission_level"
67
- name="<?php echo esc_attr( $option_name ); ?>[urlmetrics_metabox_permission_level][]"
68
- class="select-container"
69
- style="width: 100%;">
70
- <?php foreach ( $urlmetrics_metabox_permission_level as $item => $label ) : ?>
71
- <?php
72
- $selected = ! empty( $_view['options']['urlmetrics_metabox_permission_level'] ) && is_array( $_view['options']['urlmetrics_metabox_permission_level'] )
73
- ? ( in_array( $item, $_view['options']['urlmetrics_metabox_permission_level'], true ) ? "selected" : '' ) // New
74
- : ( $_view['options']['urlmetrics_metabox_permission_level'] === $item ? "selected" : '' );
75
- ?>
76
- <option
77
- <?php echo esc_attr( $selected ); ?>
78
  value="<?php echo esc_attr( $item ); ?>">
79
- <?php echo esc_html( $label ); ?>
80
- </option>
81
- <?php endforeach; ?>
82
- </select>
83
- </div>
84
  </div>
85
  </div>
4
  $urlmetrics_metabox_permission_level = empty( $urlmetrics_metabox_permission_level ) ? array() : $urlmetrics_metabox_permission_level;
5
  $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
6
  ?>
7
+ <div class="sui-box-settings-row">
8
+ <div class="sui-box-settings-col-1">
9
+ <label class="sui-settings-label"><?php esc_html_e( 'Access', 'wds' ); ?></label>
 
10
  </div>
11
+ <div class="sui-box-settings-col-2">
 
 
 
 
12
 
13
+ <label for="seo_metabox_permission_level"
14
+ class="sui-settings-label"><?php esc_html_e( 'In page SEO meta box', 'wds' ); ?></label>
15
+ <span class="sui-description"><?php esc_html_e( 'Choose what user level you want to be able to edit individual post and page meta tags.', 'wds' ); ?></span>
16
+
17
+ <select id="seo_metabox_permission_level"
18
+ name="<?php echo esc_attr( $option_name ); ?>[seo_metabox_permission_level][]"
19
+ class="sui-select"
20
+ data-minimum-results-for-search="-1">
21
+ <?php foreach ( $seo_metabox_permission_level as $item => $label ) : ?>
22
+ <?php
23
+ $selected = ! empty( $_view['options']['seo_metabox_permission_level'] ) && is_array( $_view['options']['seo_metabox_permission_level'] )
24
+ ? ( in_array( $item, $_view['options']['seo_metabox_permission_level'], true ) ? "selected" : '' ) // New
25
+ : ( $_view['options']['seo_metabox_permission_level'] === $item ? "selected" : '' );
26
+ ?>
27
+ <option
28
+ <?php echo esc_attr( $selected ); ?>
29
  value="<?php echo esc_attr( $item ); ?>">
30
+ <?php echo esc_html( $label ); ?>
31
+ </option>
32
+ <?php endforeach; ?>
33
+ </select>
 
34
 
35
+ <label for="seo_metabox_301_permission_level"
36
+ class="sui-settings-label"><?php esc_html_e( '301 Redirections', 'wds' ); ?></label>
37
+ <span class="sui-description"><?php esc_html_e( 'Choose what user level has the ability to add 301 redirects to individual posts and pages.', 'wds' ); ?></span>
 
38
 
39
+ <select id="seo_metabox_301_permission_level"
40
+ name="<?php echo esc_attr( $option_name ); ?>[seo_metabox_301_permission_level][]"
41
+ class="sui-select"
42
+ data-minimum-results-for-search="-1">
43
+ <?php foreach ( $seo_metabox_301_permission_level as $item => $label ) { ?>
44
+ <?php
45
+ $selected = ! empty( $_view['options']['seo_metabox_301_permission_level'] ) && is_array( $_view['options']['seo_metabox_301_permission_level'] )
46
+ ? ( in_array( $item, $_view['options']['seo_metabox_301_permission_level'], true ) ? "selected" : '' ) // New
47
+ : ( $_view['options']['seo_metabox_301_permission_level'] === $item ? "selected" : '' );
48
+ ?>
49
+ <option
50
+ <?php echo esc_attr( $selected ); ?>
51
  value="<?php echo esc_attr( $item ); ?>">
52
+ <?php echo esc_html( $label ); ?>
53
+ </option>
54
+ <?php } ?>
55
+ </select>
 
56
 
57
+ <label for="urlmetrics_metabox_permission_level"
58
+ class="sui-settings-label"><?php esc_html_e( 'Show Moz data to roles', 'wds' ); ?></label>
59
+ <span class="sui-description"><?php esc_html_e( 'Choose what user level gets to view the Moz data.', 'wds' ); ?></span>
 
60
 
61
+ <select id="urlmetrics_metabox_permission_level"
62
+ name="<?php echo esc_attr( $option_name ); ?>[urlmetrics_metabox_permission_level][]"
63
+ class="sui-select"
64
+ data-minimum-results-for-search="-1">
65
+ <?php foreach ( $urlmetrics_metabox_permission_level as $item => $label ) : ?>
66
+ <?php
67
+ $selected = ! empty( $_view['options']['urlmetrics_metabox_permission_level'] ) && is_array( $_view['options']['urlmetrics_metabox_permission_level'] )
68
+ ? ( in_array( $item, $_view['options']['urlmetrics_metabox_permission_level'], true ) ? "selected" : '' ) // New
69
+ : ( $_view['options']['urlmetrics_metabox_permission_level'] === $item ? "selected" : '' );
70
+ ?>
71
+ <option
72
+ <?php echo esc_attr( $selected ); ?>
73
  value="<?php echo esc_attr( $item ); ?>">
74
+ <?php echo esc_html( $label ); ?>
75
+ </option>
76
+ <?php endforeach; ?>
77
+ </select>
 
78
  </div>
79
  </div>
includes/admin/templates/settings/settings.php CHANGED
@@ -1,75 +1,98 @@
1
- <div id="container" class="wrap wrap-wds wds-page wds-page-settings">
 
2
 
3
- <section id="header">
4
- <div class="actions">
5
- <a target="_blank" class="button button-small button-light actions-button"
6
- href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/smartcrawl/#chapter-6">
7
- <i class="wds-icon-academy"></i>
8
- <?php esc_html_e( 'View Documentation', 'wds' ); ?>
9
- </a>
10
- </div>
11
 
12
- <?php $this->_render( 'settings-message-top' ); ?>
13
- <h1><?php esc_html_e( 'SmartCrawl Settings', 'wds' ); ?></h1>
14
- </section><!-- end header -->
15
- <div class="vertical-tabs">
16
- <?php
17
- $this->_render( 'vertical-tab', array(
18
- 'tab_id' => 'tab_general_settings',
19
- 'tab_name' => __( 'General Settings', 'wds' ),
20
- 'is_active' => 'tab_general_settings' === $active_tab,
21
- 'before_output' => $this->_load( '_forms/settings' ),
22
- 'after_output' => '</form>',
23
- 'tab_sections' => array(
24
  array(
25
- 'section_template' => 'settings/settings-section-general',
26
- 'section_args' => array(
27
- 'verification_pages' => $verification_pages,
28
- 'sitemap_option_name' => $sitemap_option_name,
29
- 'slugs' => $slugs,
30
- 'wds_sitewide_mode' => $wds_sitewide_mode,
31
- 'blog_tabs' => $blog_tabs,
32
- 'plugin_modules' => $plugin_modules,
33
- ),
 
34
  ),
35
  ),
36
- ) );
37
- ?>
38
 
39
- <?php
40
- $this->_render( 'vertical-tab', array(
41
- 'tab_id' => 'tab_user_roles',
42
- 'tab_name' => __( 'User Roles', 'wds' ),
43
- 'is_active' => 'tab_user_roles' === $active_tab,
44
- 'before_output' => $this->_load( '_forms/settings' ),
45
- 'after_output' => '</form>',
46
- 'tab_sections' => array(
47
- array(
48
- 'section_template' => 'settings/settings-section-user-roles',
49
- 'section_args' => array(
50
- 'seo_metabox_permission_level' => $seo_metabox_permission_level,
51
- 'seo_metabox_301_permission_level' => $seo_metabox_301_permission_level,
52
- 'urlmetrics_metabox_permission_level' => $urlmetrics_metabox_permission_level,
 
 
 
 
 
 
 
 
 
53
  ),
54
  ),
55
- ),
56
- ) );
57
- ?>
58
 
59
- <?php
60
- $this->_render( 'vertical-tab', array(
61
- 'tab_id' => 'tab_import_export',
62
- 'tab_name' => __( 'Import / Export', 'wds' ),
63
- 'is_active' => 'tab_import_export' === $active_tab,
64
- 'button_text' => false,
65
- 'before_output' => $this->_load( '_forms/import-export' ),
66
- 'after_output' => '</form>',
67
- 'tab_sections' => array(
68
- array(
69
- 'section_template' => 'settings/settings-section-import-export',
 
 
 
 
70
  ),
71
- ),
72
- ) );
73
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  </div>
 
 
75
  </div>
1
+ <?php $this->_render( 'before-page-container' ); ?>
2
+ <div id="container" class="sui-wrap wrap wrap-wds wds-page wds-page-settings">
3
 
4
+ <?php $this->_render( 'page-header', array(
5
+ 'title' => esc_html__( 'SmartCrawl Settings', 'wds' ),
6
+ 'documentation_chapter' => 'settings',
7
+ ) ); ?>
 
 
 
 
8
 
9
+ <div class="wds-vertical-tabs-container sui-row-with-sidenav">
10
+ <?php $this->_render( 'vertical-tabs-side-nav', array(
11
+ 'active_tab' => $active_tab,
12
+ 'tabs' => array(
 
 
 
 
 
 
 
 
13
  array(
14
+ 'id' => 'tab_general_settings',
15
+ 'name' => esc_html__( 'General Settings', 'wds' ),
16
+ ),
17
+ array(
18
+ 'id' => 'tab_user_roles',
19
+ 'name' => esc_html__( 'User Roles', 'wds' ),
20
+ ),
21
+ array(
22
+ 'id' => 'tab_import_export',
23
+ 'name' => esc_html__( 'Import / Export', 'wds' ),
24
  ),
25
  ),
26
+ ) ); ?>
 
27
 
28
+ <form action='<?php echo esc_attr( $_view['action_url'] ); ?>' method='post' class="wds-form">
29
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
30
+
31
+ <input type="hidden"
32
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
33
+ value="1"/>
34
+
35
+ <?php
36
+ $this->_render( 'vertical-tab', array(
37
+ 'tab_id' => 'tab_general_settings',
38
+ 'tab_name' => __( 'General Settings', 'wds' ),
39
+ 'is_active' => 'tab_general_settings' === $active_tab,
40
+ 'tab_sections' => array(
41
+ array(
42
+ 'section_template' => 'settings/settings-section-general',
43
+ 'section_args' => array(
44
+ 'verification_pages' => $verification_pages,
45
+ 'sitemap_option_name' => $sitemap_option_name,
46
+ 'slugs' => $slugs,
47
+ 'wds_sitewide_mode' => $wds_sitewide_mode,
48
+ 'blog_tabs' => $blog_tabs,
49
+ 'plugin_modules' => $plugin_modules,
50
+ ),
51
  ),
52
  ),
53
+ ) );
 
 
54
 
55
+ $this->_render( 'vertical-tab', array(
56
+ 'tab_id' => 'tab_user_roles',
57
+ 'tab_name' => __( 'User Roles', 'wds' ),
58
+ 'is_active' => 'tab_user_roles' === $active_tab,
59
+ 'before_output' => $this->_load( '_forms/settings' ),
60
+ 'after_output' => '</form>',
61
+ 'tab_sections' => array(
62
+ array(
63
+ 'section_template' => 'settings/settings-section-user-roles',
64
+ 'section_args' => array(
65
+ 'seo_metabox_permission_level' => $seo_metabox_permission_level,
66
+ 'seo_metabox_301_permission_level' => $seo_metabox_301_permission_level,
67
+ 'urlmetrics_metabox_permission_level' => $urlmetrics_metabox_permission_level,
68
+ ),
69
+ ),
70
  ),
71
+ ) );
72
+ ?>
73
+ </form>
74
+
75
+ <form method='post' enctype="multipart/form-data" class="wds-form">
76
+ <?php $this->settings_fields( $_view['option_name'] ); ?>
77
+
78
+ <input type="hidden"
79
+ name='<?php echo esc_attr( $_view['option_name'] ); ?>[<?php echo esc_attr( $_view['slug'] ); ?>-setup]'
80
+ value="1"/>
81
+ <?php
82
+ $this->_render( 'vertical-tab', array(
83
+ 'tab_id' => 'tab_import_export',
84
+ 'tab_name' => __( 'Import / Export', 'wds' ),
85
+ 'is_active' => 'tab_import_export' === $active_tab,
86
+ 'button_text' => false,
87
+ 'tab_sections' => array(
88
+ array(
89
+ 'section_template' => 'settings/settings-section-import-export',
90
+ ),
91
+ ),
92
+ ) );
93
+ ?>
94
+ </form>
95
  </div>
96
+
97
+ <?php $this->_render( 'footer' ); ?>
98
  </div>
includes/admin/templates/settings/underscore-import-error.php CHANGED
@@ -1,16 +1,18 @@
1
  <p><?php esc_html_e( "We have encountered an error while importing your data. You may retry the import or contact our support if the problem persists.", 'wds' ); ?></p>
2
  {{ if(error) { }}
3
- <div class="wds-notice wds-notice-error">
4
- <p>{{- error }}</p>
5
- </div>
6
  {{ } }}
7
 
8
- <div class="action wds-box-footer">
9
- <button type="button" class="button button-dark button-dark-o wds-import-skip">
10
- <?php esc_html_e( 'Cancel', 'wds' ); ?>
11
- </button>
 
12
 
13
- <button class="button wds-import-main-action wds-reattempt-import">
14
- <?php esc_html_e( 'Try Again', 'wds' ); ?>
15
- </button>
 
16
  </div>
1
  <p><?php esc_html_e( "We have encountered an error while importing your data. You may retry the import or contact our support if the problem persists.", 'wds' ); ?></p>
2
  {{ if(error) { }}
3
+ <?php $this->_render( 'notice', array(
4
+ 'message' => '{{- error }}',
5
+ ) ); ?>
6
  {{ } }}
7
 
8
+ <div class="wds-import-footer">
9
+ <div class="cf">
10
+ <button type="button" class="sui-button sui-button-ghost wds-import-skip">
11
+ <?php esc_html_e( 'Cancel', 'wds' ); ?>
12
+ </button>
13
 
14
+ <button class="sui-button wds-import-main-action wds-reattempt-import">
15
+ <?php esc_html_e( 'Try Again', 'wds' ); ?>
16
+ </button>
17
+ </div>
18
  </div>
includes/admin/templates/settings/underscore-import-options.php CHANGED
@@ -1,4 +1,4 @@
1
- <div class="box-content modal">
2
  <p><?php printf( esc_html__( "Choose what you'd like to import from %s.", 'wds' ), '{{- plugin_name }}' ); ?></p>
3
 
4
  <div class="wds-separator-top wds-import-item">
@@ -50,12 +50,15 @@
50
  </div>
51
  </div>
52
 
53
- <div class="action wds-box-footer">
54
- <button type="button" class="button wds-import-main-action wds-import-start">
55
- <?php esc_html_e( 'Begin Import', 'wds' ); ?>
56
- </button>
 
 
57
 
58
- <span class="wds-box-footer-description" type="button">
59
- <?php esc_html_e( 'Note: Importing can take a while if you have a large amount of content on your website.', 'wds' ); ?>
60
- </span>
 
61
  </div>
1
+ <div class="wds-import-body">
2
  <p><?php printf( esc_html__( "Choose what you'd like to import from %s.", 'wds' ), '{{- plugin_name }}' ); ?></p>
3
 
4
  <div class="wds-separator-top wds-import-item">
50
  </div>
51
  </div>
52
 
53
+ <div class="wds-import-footer">
54
+ <div class="cf">
55
+ <button type="button" class="sui-button sui-button-blue wds-import-main-action wds-import-start">
56
+ <?php esc_html_e( 'Begin Import', 'wds' ); ?>
57
+ </button>
58
+ </div>
59
 
60
+ <?php $this->_render( 'notice', array(
61
+ 'class' => 'sui-notice-info',
62
+ 'message' => esc_html__( 'Note: Importing can take a while if you have a large amount of content on your website.', 'wds' ),
63
+ ) ); ?>
64
  </div>
includes/admin/templates/settings/underscore-import-progress.php CHANGED
@@ -1,7 +1,7 @@
1
- <p><?php printf(esc_html__( 'Importing your %s settings, please keep this window open …', 'wds' ), '{{- plugin_name }}'); ?></p>
2
  <?php if ( is_multisite() ): ?>
3
  <div class="wds-site-progress">
4
- <label class="wds-label"><?php esc_html_e('Overall Progress', 'wds'); ?></label>
5
  <?php $this->_render( 'progress-bar', array(
6
  'progress' => 0,
7
  ) ); ?>
@@ -9,7 +9,7 @@
9
  <?php endif; ?>
10
  <div class="wds-post-progress">
11
  <?php if ( is_multisite() ): ?>
12
- <label class="wds-label"><?php esc_html_e('Current Subsite', 'wds'); ?></label>
13
  <?php endif; ?>
14
  <?php $this->_render( 'progress-bar', array(
15
  'progress' => 0,
1
+ <p><?php printf( esc_html__( 'Importing your %s settings, please keep this window open …', 'wds' ), '{{- plugin_name }}' ); ?></p>
2
  <?php if ( is_multisite() ): ?>
3
  <div class="wds-site-progress">
4
+ <label class="sui-label"><?php esc_html_e( 'Overall Progress', 'wds' ); ?></label>
5
  <?php $this->_render( 'progress-bar', array(
6
  'progress' => 0,
7
  ) ); ?>
9
  <?php endif; ?>
10
  <div class="wds-post-progress">
11
  <?php if ( is_multisite() ): ?>
12
+ <label class="sui-label"><?php esc_html_e( 'Current Subsite', 'wds' ); ?></label>
13
  <?php endif; ?>
14
  <?php $this->_render( 'progress-bar', array(
15
  'progress' => 0,
includes/admin/templates/settings/underscore-import-success.php CHANGED
@@ -1,5 +1,5 @@
1
- <p><?php esc_html_e( 'All done!', 'wds' ); ?></p>
2
- <div class="wds-notice wds-notice-success">
3
  <p>
4
  <?php printf( esc_html__( 'Your %s settings have been imported successfully and are now active.', 'wds' ), '{{- plugin_name }}' ); ?>
5
  {{ if(deactivation_url) { }}
@@ -8,14 +8,18 @@
8
  </p>
9
  </div>
10
 
11
- <div class="action wds-box-footer">
12
- <button type="button" class="button button-dark button-dark-o wds-import-skip">
13
- <?php esc_html_e( 'Close', 'wds' ); ?>
14
- </button>
 
15
 
16
- {{ if(deactivation_url) { }}
17
- <a class="button wds-import-main-action" href="{{= deactivation_url }}">
18
- <?php esc_html_e( 'Deactivate', 'wds' ); ?> {{- plugin_name }}
19
- </a>
20
- {{ } }}
 
 
 
21
  </div>
1
+ <p><?php esc_html_e( 'All done, off to the pub!', 'wds' ); ?></p>
2
+ <div class="wds-notice sui-notice sui-notice-success">
3
  <p>
4
  <?php printf( esc_html__( 'Your %s settings have been imported successfully and are now active.', 'wds' ), '{{- plugin_name }}' ); ?>
5
  {{ if(deactivation_url) { }}
8
  </p>
9
  </div>
10
 
11
+ <div class="wds-import-footer">
12
+ <div class="cf">
13
+ <button type="button" class="sui-button sui-button-ghost wds-import-skip">
14
+ <?php esc_html_e( 'Close', 'wds' ); ?>
15
+ </button>
16
 
17
+ {{ if(deactivation_url) { }}
18
+ <a class="sui-button wds-import-main-action" href="{{= deactivation_url }}">
19
+ <i class="sui-icon-power-on-off" aria-hidden="true"></i>
20
+
21
+ <?php esc_html_e( 'Deactivate', 'wds' ); ?> {{- plugin_name }}
22
+ </a>
23
+ {{ } }}
24
+ </div>
25
  </div>
includes/admin/templates/sitemap/sitemap-buddypress-settings.php CHANGED
@@ -1,53 +1,55 @@
1
- <?php $groups_enabled = ! empty( $_view['options']['sitemap-buddypress-groups'] ); ?>
2
- <div class="wds-sitemap-section wds-toggleable <?php echo $groups_enabled ? '' : 'inactive'; ?>">
3
- <?php
4
- $this->_render( 'sitemap/sitemap-part', array(
5
- 'item' => 'sitemap-buddypress-groups',
6
- 'item_name' => '',
7
- 'item_label' => __( 'BuddyPress Groups', 'wds' ),
8
- 'option_name' => $_view['option_name'] . '[sitemap-buddypress-groups]',
9
- ) );
10
- ?>
11
 
12
- <div class="wds-sitemap-sub-section wds-toggleable-inside-box">
13
- <?php if ( ! empty( $exclude_groups ) ) : ?>
14
- <?php foreach ( $exclude_groups as $exclude_bp_role => $exclude_bp_role_label ) : ?>
15
- <?php
16
- $this->_render( 'sitemap/sitemap-part', array(
17
- 'item' => 'sitemap-buddypress-' . $exclude_bp_role,
18
- 'item_name' => '',
19
- 'item_label' => $exclude_bp_role_label,
20
- 'option_name' => $_view['option_name'] . '[exclude_bp_groups][]',
21
- ) );
22
- ?>
23
- <?php endforeach; ?>
24
- <?php endif; ?>
25
- </div>
26
- </div>
27
 
28
- <?php $profiles_enabled = ! empty( $_view['options']['sitemap-buddypress-profiles'] ); ?>
29
- <div class="wds-sitemap-section wds-toggleable <?php echo $profiles_enabled ? '' : 'inactive'; ?>">
30
- <?php
31
- $this->_render( 'sitemap/sitemap-part', array(
32
- 'item' => 'sitemap-buddypress-profiles',
33
- 'item_name' => '',
34
- 'item_label' => __( 'BuddyPress Profiles', 'wds' ),
35
- 'option_name' => $_view['option_name'] . '[sitemap-buddypress-profiles]',
36
- ) );
37
- ?>
 
 
 
 
 
 
 
38
 
39
- <div class="wds-sitemap-sub-section wds-toggleable-inside-box">
40
- <?php if ( ! empty( $exclude_roles ) ) : ?>
41
- <?php foreach ( $exclude_roles as $exclude_bp_role => $exclude_bp_role_label ) : ?>
42
- <?php
43
- $this->_render( 'sitemap/sitemap-part', array(
44
- 'item' => 'sitemap-buddypress-roles-' . $exclude_bp_role,
45
- 'item_name' => '',
46
- 'item_label' => $exclude_bp_role_label,
47
- 'option_name' => $_view['option_name'] . '[exclude_bp_roles][]',
48
- ) );
49
- ?>
50
- <?php endforeach; ?>
51
- <?php endif; ?>
52
- </div>
53
- </div>
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $groups_enabled = ! empty( $_view['options']['sitemap-buddypress-groups'] );
3
+ $profiles_enabled = ! empty( $_view['options']['sitemap-buddypress-profiles'] );
 
 
 
 
 
 
 
4
 
5
+ $this->_render( 'sitemap/sitemap-part', array(
6
+ 'item' => 'sitemap-buddypress-groups',
7
+ 'item_name' => '',
8
+ 'item_label' => esc_html__( 'BuddyPress Groups', 'wds' ),
9
+ 'option_name' => $_view['option_name'] . '[sitemap-buddypress-groups]',
10
+ 'class' => 'wds-sitemap-toggleable wds-sitemap-buddypress-groups',
11
+ ) ); ?>
 
 
 
 
 
 
 
 
12
 
13
+ <tr>
14
+ <td colspan="3" class="wds-nested-sitemap-parts">
15
+ <table class="sui-table wds-sitemap-parts">
16
+ <?php if ( ! empty( $exclude_groups ) ) {
17
+ foreach ( $exclude_groups as $exclude_bp_group => $exclude_bp_group_label ) {
18
+ $this->_render( 'sitemap/sitemap-part', array(
19
+ 'item' => 'sitemap-buddypress-' . $exclude_bp_group,
20
+ 'item_name' => '',
21
+ 'item_label' => $exclude_bp_group_label,
22
+ 'option_name' => $_view['option_name'] . '[exclude_bp_groups][]',
23
+ 'inverted' => true,
24
+ ) );
25
+ }
26
+ } ?>
27
+ </table>
28
+ </td>
29
+ </tr>
30
 
31
+ <?php $this->_render( 'sitemap/sitemap-part', array(
32
+ 'item' => 'sitemap-buddypress-profiles',
33
+ 'item_name' => '',
34
+ 'item_label' => esc_html__( 'BuddyPress Profiles', 'wds' ),
35
+ 'option_name' => $_view['option_name'] . '[sitemap-buddypress-profiles]',
36
+ 'class' => 'wds-sitemap-toggleable wds-sitemap-buddypress-profiles',
37
+ ) ); ?>
38
+
39
+ <tr>
40
+ <td colspan="3" class="wds-nested-sitemap-parts">
41
+ <table class="sui-table wds-sitemap-parts">
42
+ <?php if ( ! empty( $exclude_roles ) ) {
43
+ foreach ( $exclude_roles as $exclude_bp_role => $exclude_bp_role_label ) {
44
+ $this->_render( 'sitemap/sitemap-part', array(
45
+ 'item' => 'sitemap-buddypress-roles-' . $exclude_bp_role,
46
+ 'item_name' => '',
47
+ 'item_label' => $exclude_bp_role_label,
48
+ 'option_name' => $_view['option_name'] . '[exclude_bp_roles][]',
49
+ 'inverted' => true,
50
+ ) );
51
+ }
52
+ } ?>
53
+ </table>
54
+ </td>
55
+ </tr>
includes/admin/templates/sitemap/sitemap-crawl-content.php CHANGED
@@ -1,14 +1,32 @@
1
  <?php
2
  /**
3
- * @var Smartcrawl_Seo_Service $service
4
  */
 
5
  $open_type = empty( $open_type ) ? null : $open_type;
6
- $this->_render( 'url-crawl-master', array(
7
- 'ready_template' => 'sitemap/sitemap-crawl-results',
8
- 'ready_args' => array(
9
- 'open_type' => $open_type,
10
- ),
11
- 'no_data_template' => 'sitemap/sitemap-no-crawler-data',
12
- 'no_data_args' => array(),
13
- 'progress_template' => 'sitemap/sitemap-progress-bar',
14
- ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  /**
3
+ * @var Smartcrawl_SeoReport $crawl_report
4
  */
5
+ $crawl_report = empty( $crawl_report ) ? null : $crawl_report;
6
  $open_type = empty( $open_type ) ? null : $open_type;
7
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
8
+ if ( ! $crawl_report ) {
9
+ return;
10
+ }
11
+
12
+ if ( $crawl_report->has_data() ) {
13
+
14
+ $this->_render( 'sitemap/sitemap-crawl-results', array(
15
+ 'report' => $crawl_report,
16
+ 'open_type' => $open_type,
17
+ 'ignored_tab_open' => $ignored_tab_open,
18
+ ) );
19
+
20
+ } elseif ( $crawl_report->is_in_progress() ) {
21
+
22
+ // The URL crawl was started and is in progress at the moment.
23
+ $this->_render( 'sitemap/sitemap-progress-bar', array(
24
+ 'progress' => $crawl_report->get_progress(),
25
+ ) );
26
+
27
+ } else {
28
+
29
+ // The URL crawl was never started so there is nothing to do.
30
+ $this->_render( 'sitemap/sitemap-no-crawler-data' );
31
+
32
+ }
includes/admin/templates/sitemap/sitemap-crawl-issue-generic.php CHANGED
@@ -11,24 +11,25 @@ $issue = $report->get_issue( $issue_id );
11
  $url = ! empty( $issue['path'] ) ? $issue['path'] : '';
12
  $path = preg_replace( '/' . preg_quote( home_url(), '/' ) . '/', '', $url );
13
  $path = empty( $path ) ? $url : $path;
 
 
 
 
14
  ?>
15
 
16
- <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>">
17
- <td>
18
- <a href="<?php echo esc_attr( $url ); ?>">
19
- <?php echo esc_html( $path ); ?>
20
- </a>
21
- </td>
22
  <td>
23
- <?php
24
- if ( isset( $issue['response'] ) && $issue['response'] ) {
25
- echo esc_html( $issue['response'] );
26
- }
27
- ?>
28
  </td>
29
  <td>
30
- <span class="wds-issues wds-issues-warning">
31
- <span><?php echo count( $issue['origin'] ); ?></span>
32
  </span>
33
  </td>
34
  <td>
@@ -36,23 +37,11 @@ $path = empty( $path ) ? $url : $path;
36
  $this->_render( 'links-dropdown', array(
37
  'label' => esc_html__( 'Options', 'wds' ),
38
  'links' => array(
39
- '#ignore' => esc_html__( 'Ignore', 'wds' ),
40
- '#occurrences' => esc_html__( 'List Occurrences', 'wds' ),
41
- '#redirect' => esc_html__( 'Redirect', 'wds' ),
42
  ),
43
  ) );
44
  ?>
45
- <?php
46
- $this->_render( 'sitemap/sitemap-occurrences-overlay', array(
47
- 'issue_id' => $issue_id,
48
- 'issue' => $issue,
49
- ) );
50
- ?>
51
- <?php
52
- $this->_render( 'sitemap/sitemap-redirect-overlay', array(
53
- 'issue_id' => $issue_id,
54
- 'issue' => $issue,
55
- ) );
56
- ?>
57
  </td>
58
  </tr>
11
  $url = ! empty( $issue['path'] ) ? $issue['path'] : '';
12
  $path = preg_replace( '/' . preg_quote( home_url(), '/' ) . '/', '', $url );
13
  $path = empty( $path ) ? $url : $path;
14
+
15
+ $rmodel = new Smartcrawl_Model_Redirection();
16
+ $redirections = $rmodel->get_all_redirections();
17
+ $redirection_target = ! empty( $redirections[ $path ] ) ? esc_url( $redirections[ $path ] ) : '';
18
  ?>
19
 
20
+ <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>"
21
+ data-path="<?php echo esc_attr( $path ); ?>"
22
+ data-redirect-path="<?php echo esc_attr( $redirection_target ); ?>">
23
+
 
 
24
  <td>
25
+ <i aria-hidden="true" class="sui-warning sui-icon-warning-alert"></i>
26
+ <small>
27
+ <strong><?php echo esc_html( $path ); ?></strong>
28
+ </small>
 
29
  </td>
30
  <td>
31
+ <span class="sui-tag sui-tag-warning">
32
+ <?php echo count( $issue['origin'] ); ?>
33
  </span>
34
  </td>
35
  <td>
37
  $this->_render( 'links-dropdown', array(
38
  'label' => esc_html__( 'Options', 'wds' ),
39
  'links' => array(
40
+ '#occurrences' => '<i class="sui-icon-list-bullet" aria-hidden="true"></i> ' . esc_html__( 'List Occurrences', 'wds' ),
41
+ '#redirect' => '<i class="sui-icon-arrow-right" aria-hidden="true"></i> ' . esc_html__( 'Redirect', 'wds' ),
42
+ '#ignore' => '<i class="sui-icon-eye-hide" aria-hidden="true"></i> ' . esc_html__( 'Ignore', 'wds' ),
43
  ),
44
  ) );
45
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
46
  </td>
47
  </tr>
includes/admin/templates/sitemap/sitemap-crawl-issue-ignored.php CHANGED
@@ -15,12 +15,18 @@ $path = empty( $path ) ? $url : $path;
15
 
16
  <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>">
17
  <td>
18
- <a href="<?php echo esc_attr( $url ); ?>">
19
- <?php echo esc_html( $path ); ?>
20
- </a>
21
  </td>
22
  <td>
23
- <button
24
- class="wds-unignore wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button button-small button-dark button-dark-o"><?php esc_html_e( 'Restore', 'wds' ); ?></button>
 
 
 
 
 
 
25
  </td>
26
  </tr>
15
 
16
  <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>">
17
  <td>
18
+ <small>
19
+ <strong><?php echo esc_html( $path ); ?></strong>
20
+ </small>
21
  </td>
22
  <td>
23
+ <button class="wds-unignore wds-disabled-during-request sui-button sui-button-ghost">
24
+ <span class="sui-loading-text">
25
+ <i class="sui-icon-plus"
26
+ aria-hidden="true"></i> <?php esc_html_e( 'Restore', 'wds' ); ?>
27
+ </span>
28
+
29
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
30
+ </button>
31
  </td>
32
  </tr>
includes/admin/templates/sitemap/sitemap-crawl-issue-sitemap.php CHANGED
@@ -16,17 +16,18 @@ $path = empty( $path ) ? $url : $path;
16
 
17
  <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>" data-path="<?php echo esc_url( $url ); ?>">
18
  <td>
19
- <a href="<?php echo esc_attr( $url ); ?>">
20
- <?php echo esc_html( $path ); ?>
21
- </a>
 
22
  </td>
23
  <td>
24
  <?php
25
  $this->_render( 'links-dropdown', array(
26
  'label' => esc_html__( 'Options', 'wds' ),
27
  'links' => array(
28
- '#add-to-sitemap' => esc_html__( 'Add to Sitemap', 'wds' ),
29
- '#ignore' => esc_html__( 'Ignore', 'wds' ),
30
  ),
31
  ) );
32
  ?>
16
 
17
  <tr data-issue-id="<?php echo esc_attr( $issue_id ); ?>" data-path="<?php echo esc_url( $url ); ?>">
18
  <td>
19
+ <i aria-hidden="true" class="sui-icon-warning-alert"></i>
20
+ <small>
21
+ <strong><?php echo esc_html( $path ); ?></strong>
22
+ </small>
23
  </td>
24
  <td>
25
  <?php
26
  $this->_render( 'links-dropdown', array(
27
  'label' => esc_html__( 'Options', 'wds' ),
28
  'links' => array(
29
+ '#add-to-sitemap' => '<i class="sui-icon-plus" aria-hidden="true"></i> ' . esc_html__( 'Add to Sitemap', 'wds' ),
30
+ '#ignore' => '<i class="sui-icon-eye-hide" aria-hidden="true"></i> ' . esc_html__( 'Ignore', 'wds' ),
31
  ),
32
  ) );
33
  ?>
includes/admin/templates/sitemap/sitemap-crawl-issues-3xx.php CHANGED
@@ -2,17 +2,14 @@
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
 
5
 
6
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
7
- 'type' => $type,
8
- 'report' => $report,
9
- 'open' => $open,
10
- 'title' => esc_html__( '%s URLs have multiple redirections', 'wds' ),
11
- 'description' => esc_html__( 'Some of your URLs have multiple redirections. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
12
- 'header_items' => array(
13
- sprintf( '<th>%s</th>', esc_html__( 'URLs resulting in errors', 'wds' ) ),
14
- sprintf( '<th>%s</th>', esc_html__( 'Error Code', 'wds' ) ),
15
- sprintf( '<th colspan="2">%s</th>', esc_html__( 'Occurrences', 'wds' ) ),
16
- ),
17
  ) );
18
-
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
5
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
6
 
7
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
8
+ 'type' => $type,
9
+ 'report' => $report,
10
+ 'open' => $open,
11
+ 'ignored_tab_open' => $ignored_tab_open,
12
+ 'singular_title' => esc_html__( '%s URL has multiple redirections', 'wds' ),
13
+ 'plural_title' => esc_html__( '%s URLs have multiple redirections', 'wds' ),
14
+ 'description' => esc_html__( 'Some of your URLs have multiple redirections. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
 
 
 
15
  ) );
 
includes/admin/templates/sitemap/sitemap-crawl-issues-4xx.php CHANGED
@@ -2,17 +2,14 @@
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
 
5
 
6
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
7
- 'type' => $type,
8
- 'report' => $report,
9
- 'open' => $open,
10
- 'title' => esc_html__( '%s URLs are resulting in 4xx errors', 'wds' ),
11
- 'description' => esc_html__( 'Some of your URLs are resulting in 4xx errors. Either the page no longer exists or the URL has changed. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
12
- 'header_items' => array(
13
- sprintf( '<th>%s</th>', esc_html__( 'URLs resulting in errors', 'wds' ) ),
14
- sprintf( '<th>%s</th>', esc_html__( 'Error Code', 'wds' ) ),
15
- sprintf( '<th colspan="2">%s</th>', esc_html__( 'Occurrences', 'wds' ) ),
16
- ),
17
  ) );
18
-
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
5
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
6
 
7
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
8
+ 'type' => $type,
9
+ 'report' => $report,
10
+ 'open' => $open,
11
+ 'ignored_tab_open' => $ignored_tab_open,
12
+ 'singular_title' => esc_html__( '%s URL is resulting in 4xx error', 'wds' ),
13
+ 'plural_title' => esc_html__( '%s URLs are resulting in 4xx errors', 'wds' ),
14
+ 'description' => esc_html__( 'Some of your URLs are resulting in 4xx errors. Either the page no longer exists or the URL has changed. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
 
 
 
15
  ) );
 
includes/admin/templates/sitemap/sitemap-crawl-issues-5xx.php CHANGED
@@ -2,17 +2,14 @@
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
 
5
 
6
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
7
- 'type' => $type,
8
- 'report' => $report,
9
- 'open' => $open,
10
- 'title' => esc_html__( '%s URLs are resulting in 5xx server errors', 'wds' ),
11
- 'description' => esc_html__( 'Some of your URLs are resulting in 5xx server errors. These errors are indicative of errors in your server-side code. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
12
- 'header_items' => array(
13
- sprintf( '<th>%s</th>', esc_html__( 'URLs resulting in errors', 'wds' ) ),
14
- sprintf( '<th>%s</th>', esc_html__( 'Error Code', 'wds' ) ),
15
- sprintf( '<th colspan="2">%s</th>', esc_html__( 'Occurrences', 'wds' ) ),
16
- ),
17
  ) );
18
-
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
5
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
6
 
7
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
8
+ 'type' => $type,
9
+ 'report' => $report,
10
+ 'open' => $open,
11
+ 'ignored_tab_open' => $ignored_tab_open,
12
+ 'singular_title' => esc_html__( '%s URL is resulting in 5xx server error', 'wds' ),
13
+ 'plural_title' => esc_html__( '%s URLs are resulting in 5xx server errors', 'wds' ),
14
+ 'description' => esc_html__( 'Some of your URLs are resulting in 5xx server errors. These errors are indicative of errors in your server-side code. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
 
 
 
15
  ) );
 
includes/admin/templates/sitemap/sitemap-crawl-issues-generic-controls.php CHANGED
@@ -1,6 +1,12 @@
1
  <tr class="wds-controls-row">
2
  <td colspan="4">
3
- <button
4
- class="wds-ignore-all wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark button-dark-o"><?php esc_html_e( 'Ignore All', 'wds' ); ?></button>
 
 
 
 
 
 
5
  </td>
6
  </tr>
1
  <tr class="wds-controls-row">
2
  <td colspan="4">
3
+ <button class="wds-ignore-all wds-disabled-during-request sui-button sui-button-ghost">
4
+ <span class="sui-loading-text">
5
+ <i class="sui-icon-eye-hide"
6
+ aria-hidden="true"></i> <?php esc_html_e( 'Ignore All', 'wds' ); ?>
7
+ </span>
8
+
9
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
10
+ </button>
11
  </td>
12
  </tr>
includes/admin/templates/sitemap/sitemap-crawl-issues-group.php CHANGED
@@ -6,14 +6,14 @@ $type = empty( $type ) ? '' : $type;
6
  */
7
  $report = empty( $report ) ? null : $report;
8
  // Optional
9
- $title = empty( $title ) ? '' : $title;
10
  $description = empty( $description ) ? '' : $description;
11
- $header_items = empty( $header_items ) ? array() : $header_items;
12
  $controls_template = empty( $controls_template ) ? 'sitemap/sitemap-crawl-issues-generic-controls' : $controls_template;
13
  $issue_template = empty( $issue_template ) ? 'sitemap/sitemap-crawl-issue-generic' : $issue_template;
14
- $success_class = empty( $success_class ) ? 'wds-check-success' : $success_class;
15
- $warning_class = empty( $warning_class ) ? 'wds-check-warning' : $warning_class;
16
  $open = empty( $open ) ? false : $open;
 
 
17
 
18
  if ( ! $report || ! $type ) {
19
  return;
@@ -32,65 +32,103 @@ foreach ( $all_issues as $issue_id ) {
32
 
33
  $issue_count = count( $active_issues );
34
  $class = $issue_count > 0 ? $warning_class : $success_class;
 
 
 
 
 
35
  ?>
36
- <div
37
- class="wds-issues-type-<?php echo esc_attr( $type ); ?> wds-accordion-section <?php echo esc_attr( $class ); ?> <?php echo $open ? 'open' : ''; ?> <?php echo $all_issues ? '' : 'disabled'; ?>"
38
- data-type="<?php echo esc_attr( $type ); ?>">
 
 
 
39
 
40
- <div class="wds-accordion-handle">
41
- <?php printf( esc_html( $title ), $issue_count > 0 ? intval( $issue_count ) : esc_html__( 'No', 'wds' ) ); ?>
 
 
 
 
 
 
 
 
42
  </div>
43
  <?php if ( $all_issues ) : ?>
44
- <div class="wds-accordion-content">
45
- <div class="wds-small-text"><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></div>
46
- <p>
47
- <?php echo esc_html( $description ); ?>
48
- </p>
49
- <?php if ( $active_issues ) : ?>
50
- <table class="wds-list-table wds-crawl-issues-table">
51
- <thead>
52
- <tr>
53
- <?php foreach ( $header_items as $header_item ) : ?>
54
- <?php echo wp_kses_post( $header_item ); ?>
55
- <?php endforeach; ?>
56
- </tr>
57
- </thead>
58
- <tbody>
59
- <?php
60
- foreach ( $active_issues as $active_issue_id ) {
61
- $this->_render( $issue_template, array(
62
- 'type' => $type,
63
- 'report' => $report,
64
- 'issue_id' => $active_issue_id,
65
- ) );
66
- }
 
 
 
 
 
 
 
 
67
 
68
- $this->_render( $controls_template );
69
- ?>
70
- </tbody>
71
- </table>
72
- <?php endif; ?>
 
 
 
 
 
 
 
73
 
74
- <?php if ( $ignored_issues ) : ?>
75
- <table class="wds-list-table wds-ignored-items-table">
76
- <thead>
77
- <tr>
78
- <th colspan="2"><?php esc_html_e( 'Ignored', 'wds' ); ?></th>
79
- </tr>
80
- </thead>
81
- <tbody>
82
- <?php
83
- foreach ( $ignored_issues as $ignored_issue_id ) {
84
- $this->_render( 'sitemap/sitemap-crawl-issue-ignored', array(
85
- 'type' => $type,
86
- 'report' => $report,
87
- 'issue_id' => $ignored_issue_id,
88
- ) );
89
- }
90
- ?>
91
- </tbody>
92
- </table>
93
- <?php endif; ?>
 
 
 
 
 
 
 
94
  </div>
95
  <?php endif; ?>
96
  </div>
6
  */
7
  $report = empty( $report ) ? null : $report;
8
  // Optional
 
9
  $description = empty( $description ) ? '' : $description;
 
10
  $controls_template = empty( $controls_template ) ? 'sitemap/sitemap-crawl-issues-generic-controls' : $controls_template;
11
  $issue_template = empty( $issue_template ) ? 'sitemap/sitemap-crawl-issue-generic' : $issue_template;
12
+ $success_class = empty( $success_class ) ? 'sui-success' : $success_class;
13
+ $warning_class = empty( $warning_class ) ? 'sui-warning' : $warning_class;
14
  $open = empty( $open ) ? false : $open;
15
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
16
+ $ignored_tab_open = $open && $ignored_tab_open;
17
 
18
  if ( ! $report || ! $type ) {
19
  return;
32
 
33
  $issue_count = count( $active_issues );
34
  $class = $issue_count > 0 ? $warning_class : $success_class;
35
+ $icon_class = $issue_count > 0 ? 'sui-icon-warning-alert' : 'sui-icon-check-tick';
36
+
37
+ $singular_title = empty( $singular_title ) ? '' : $singular_title;
38
+ $plural_title = empty( $plural_title ) ? '' : $plural_title;
39
+ $title = 1 === $issue_count ? $singular_title : $plural_title;
40
  ?>
41
+ <div class="wds-issues-type-<?php echo esc_attr( $type ); ?> sui-accordion-item <?php echo esc_attr( $class ); ?> <?php echo $open ? 'sui-accordion-item--open' : ''; ?> <?php echo $all_issues ? '' : 'disabled'; ?>"
42
+ data-type="<?php echo esc_attr( $type ); ?>">
43
+
44
+ <div class="sui-accordion-item-header">
45
+ <div class="sui-accordion-item-title">
46
+ <i aria-hidden="true" class="<?php echo esc_attr( $class ); ?> <?php echo esc_attr( $icon_class ); ?>"></i>
47
 
48
+ <?php printf( esc_html( $title ), $issue_count > 0 ? intval( $issue_count ) : esc_html__( 'No', 'wds' ) ); ?>
49
+ </div>
50
+ <?php if ( $all_issues ): ?>
51
+ <div>
52
+ <span class="sui-accordion-open-indicator">
53
+ <i aria-hidden="true" class="sui-icon-chevron-down"></i>
54
+ <button type="button" class="sui-screen-reader-text"><?php esc_html__( 'Expand' ); ?></button>
55
+ </span>
56
+ </div>
57
+ <?php endif; ?>
58
  </div>
59
  <?php if ( $all_issues ) : ?>
60
+ <div class="sui-accordion-item-body">
61
+ <div class="sui-box">
62
+ <div class="sui-box-body">
63
+ <small><strong><?php esc_html_e( 'Overview', 'wds' ); ?></strong></small>
64
+ <p>
65
+ <small><?php echo esc_html( $description ); ?></small>
66
+ </p>
67
+
68
+ <div class="sui-tabs">
69
+ <div data-tabs>
70
+ <div class="issues <?php echo $ignored_tab_open ? '' : 'active'; ?>">
71
+ <?php esc_html_e( 'Issues', 'wds' ); ?>
72
+ </div>
73
+
74
+ <div class="ignored <?php echo $ignored_tab_open ? 'active' : ''; ?>">
75
+ <?php esc_html_e( 'Ignored', 'wds' ); ?>
76
+ </div>
77
+ </div>
78
+ <div data-panes>
79
+ <div class="<?php echo $ignored_tab_open ? '' : 'active'; ?>">
80
+ <table class="wds-crawl-issues-table">
81
+ <tbody>
82
+ <?php if ( $active_issues ) : ?>
83
+ <?php
84
+ foreach ( $active_issues as $active_issue_id ) {
85
+ $this->_render( $issue_template, array(
86
+ 'type' => $type,
87
+ 'report' => $report,
88
+ 'issue_id' => $active_issue_id,
89
+ ) );
90
+ }
91
 
92
+ $this->_render( $controls_template );
93
+ ?>
94
+ <?php else: ?>
95
+ <tr class="wds-no-results-row">
96
+ <td colspan="2">
97
+ <small><?php esc_html_e( 'No active issues.' ); ?></small>
98
+ </td>
99
+ </tr>
100
+ <?php endif; ?>
101
+ </tbody>
102
+ </table>
103
+ </div>
104
 
105
+ <div class="<?php echo $ignored_tab_open ? 'active' : ''; ?>">
106
+ <table class="wds-ignored-items-table">
107
+ <tbody>
108
+ <?php if ( $ignored_issues && is_array( $ignored_issues ) ) : ?>
109
+ <?php
110
+ foreach ( $ignored_issues as $ignored_issue_id ) {
111
+ $this->_render( 'sitemap/sitemap-crawl-issue-ignored', array(
112
+ 'type' => $type,
113
+ 'report' => $report,
114
+ 'issue_id' => $ignored_issue_id,
115
+ ) );
116
+ }
117
+ ?>
118
+ <?php else: ?>
119
+ <tr class="wds-no-results-row">
120
+ <td colspan="2">
121
+ <small><?php esc_html_e( 'No ignored issues.' ); ?></small>
122
+ </td>
123
+ </tr>
124
+ <?php endif; ?>
125
+ </tbody>
126
+ </table>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
  </div>
133
  <?php endif; ?>
134
  </div>
includes/admin/templates/sitemap/sitemap-crawl-issues-inaccessible.php CHANGED
@@ -2,17 +2,14 @@
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
 
5
 
6
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
7
- 'type' => $type,
8
- 'report' => $report,
9
- 'open' => $open,
10
- 'title' => esc_html__( '%s URLs could not be processed', 'wds' ),
11
- 'description' => esc_html__( 'Some of your URLs could not be processed by our crawlers. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
12
- 'header_items' => array(
13
- sprintf( '<th>%s</th>', esc_html__( "URLs that couldn't be processed", 'wds' ) ),
14
- sprintf( '<th>%s</th>', esc_html__( 'Error Code', 'wds' ) ),
15
- sprintf( '<th colspan="2">%s</th>', esc_html__( 'Occurrences', 'wds' ) ),
16
- ),
17
  ) );
18
-
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
5
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
6
 
7
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
8
+ 'type' => $type,
9
+ 'report' => $report,
10
+ 'open' => $open,
11
+ 'ignored_tab_open' => $ignored_tab_open,
12
+ 'singular_title' => esc_html__( '%s URL could not be processed', 'wds' ),
13
+ 'plural_title' => esc_html__( '%s URLs could not be processed', 'wds' ),
14
+ 'description' => esc_html__( 'Some of your URLs could not be processed by our crawlers. In the options menu you can List occurrences to see where these links can be found, and also set up and 301 redirects to a newer version of these pages.', 'wds' ),
 
 
 
15
  ) );
 
includes/admin/templates/sitemap/sitemap-crawl-issues-sitemap-controls.php CHANGED
@@ -1,10 +1,22 @@
1
  <tr class="wds-controls-row">
2
  <td>
3
- <button
4
- class="wds-ignore-all wds-button-with-loader wds-button-with-right-loader wds-disabled-during-request button button-small button-dark button-dark-o"><?php esc_html_e( 'Ignore All', 'wds' ); ?></button>
 
 
 
 
 
 
5
  </td>
6
  <td>
7
- <button
8
- class="wds-add-all-to-sitemap button wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request button-small"><?php esc_html_e( 'Add All to Sitemap', 'wds' ); ?></button>
 
 
 
 
 
 
9
  </td>
10
  </tr>
1
  <tr class="wds-controls-row">
2
  <td>
3
+ <button class="wds-ignore-all wds-disabled-during-request sui-button sui-button-ghost">
4
+ <span class="sui-loading-text">
5
+ <i class="sui-icon-eye-hide"
6
+ aria-hidden="true"></i> <?php esc_html_e( 'Ignore All', 'wds' ); ?>
7
+ </span>
8
+
9
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
10
+ </button>
11
  </td>
12
  <td>
13
+ <button class="wds-add-all-to-sitemap wds-disabled-during-request sui-button sui-button-blue">
14
+ <span class="sui-loading-text">
15
+ <i class="sui-icon-plus"
16
+ aria-hidden="true"></i> <?php esc_html_e( 'Add All to Sitemap', 'wds' ); ?>
17
+ </span>
18
+
19
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
20
+ </button>
21
  </td>
22
  </tr>
includes/admin/templates/sitemap/sitemap-crawl-issues-sitemap.php CHANGED
@@ -2,18 +2,17 @@
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
 
5
 
6
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
7
  'type' => $type,
8
  'report' => $report,
9
  'open' => $open,
10
- 'title' => esc_html__( '%s URLs are missing from the sitemap', 'wds' ),
 
 
11
  'description' => esc_html__( 'SmartCrawl couldn’t find these URLs in your Sitemap. You can choose to add them to your Sitemap, or ignore the warning if you don’t want them included.', 'wds' ),
12
- 'header_items' => array(
13
- sprintf( '<th colspan="2">%s</th>', esc_html__( 'Missing URLs', 'wds' ) ),
14
- ),
15
  'issue_template' => 'sitemap/sitemap-crawl-issue-sitemap',
16
  'controls_template' => 'sitemap/sitemap-crawl-issues-sitemap-controls',
17
  'warning_class' => 'wds-check-invalid',
18
  ) );
19
-
2
  $type = empty( $type ) ? '' : $type;
3
  $report = empty( $report ) ? null : $report;
4
  $open = empty( $open ) ? false : $open;
5
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
6
 
7
  $this->_render( 'sitemap/sitemap-crawl-issues-group', array(
8
  'type' => $type,
9
  'report' => $report,
10
  'open' => $open,
11
+ 'ignored_tab_open' => $ignored_tab_open,
12
+ 'singular_title' => esc_html__( '%s URL is missing from the sitemap', 'wds' ),
13
+ 'plural_title' => esc_html__( '%s URLs are missing from the sitemap', 'wds' ),
14
  'description' => esc_html__( 'SmartCrawl couldn’t find these URLs in your Sitemap. You can choose to add them to your Sitemap, or ignore the warning if you don’t want them included.', 'wds' ),
 
 
 
15
  'issue_template' => 'sitemap/sitemap-crawl-issue-sitemap',
16
  'controls_template' => 'sitemap/sitemap-crawl-issues-sitemap-controls',
17
  'warning_class' => 'wds-check-invalid',
18
  ) );
 
includes/admin/templates/sitemap/sitemap-crawl-results.php CHANGED
@@ -15,44 +15,39 @@ $active_issues = $report->get_issues_count();
15
  $ignored_issues = $report->get_ignored_issues_count();
16
  $open_type = empty( $open_type ) ? null : $open_type;
17
  $default_issue_types = array( '3xx', '4xx', '5xx', 'inaccessible', 'sitemap' );
 
18
  ?>
19
  <div class="wds-crawl-results-report wds-report"
20
  data-active-issues="<?php echo intval( $active_issues ); ?>"
21
  data-ignored-issues="<?php echo intval( $ignored_issues ); ?>">
22
 
 
 
 
 
23
  <?php
24
  if ( $report->has_state_messages() ) {
25
  foreach ( $report->get_state_messages() as $state_message ) {
26
  $this->_render( 'notice', array(
27
  'message' => $state_message,
28
- 'class' => 'wds-notice-error',
29
  ) );
30
  }
31
  }
32
  ?>
33
 
34
- <?php
35
- $this->_render( 'sitemap/sitemap-crawl-stats', array(
36
- 'active_issues' => $active_issues,
37
- 'report' => $report,
38
- ) );
39
- ?>
40
-
41
  <p><?php esc_html_e( 'Here are potential issues SmartCrawl has picked up. We recommend fixing them up to ensure you aren’t penalized by search engines - you can however ignore any of these warnings.', 'wds' ); ?></p>
42
 
43
- <?php if ( ! Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SITE )->is_member() ) { ?>
44
- <div class="wds-obfuscate-section"></div>
45
- <?php } ?>
46
-
47
- <div class="wds-accordion">
48
  <?php
49
  $issue_types = array_unique( array_replace_recursive( $default_issue_types, $report->get_issue_types() ) );
50
 
51
  foreach ( $issue_types as $type ) {
52
  $this->_render( 'sitemap/sitemap-crawl-issues-' . $type, array(
53
- 'type' => $type,
54
- 'report' => $report,
55
- 'open' => $open_type === $type,
 
56
  ) );
57
  }
58
  ?>
15
  $ignored_issues = $report->get_ignored_issues_count();
16
  $open_type = empty( $open_type ) ? null : $open_type;
17
  $default_issue_types = array( '3xx', '4xx', '5xx', 'inaccessible', 'sitemap' );
18
+ $ignored_tab_open = empty( $ignored_tab_open ) ? false : $ignored_tab_open;
19
  ?>
20
  <div class="wds-crawl-results-report wds-report"
21
  data-active-issues="<?php echo intval( $active_issues ); ?>"
22
  data-ignored-issues="<?php echo intval( $ignored_issues ); ?>">
23
 
24
+ <?php // Anchors for the issue dialogs ?>
25
+ <div id="wds-issue-redirect"></div>
26
+ <div id="wds-issue-occurrences"></div>
27
+
28
  <?php
29
  if ( $report->has_state_messages() ) {
30
  foreach ( $report->get_state_messages() as $state_message ) {
31
  $this->_render( 'notice', array(
32
  'message' => $state_message,
33
+ 'class' => 'sui-notice-error',
34
  ) );
35
  }
36
  }
37
  ?>
38
 
 
 
 
 
 
 
 
39
  <p><?php esc_html_e( 'Here are potential issues SmartCrawl has picked up. We recommend fixing them up to ensure you aren’t penalized by search engines - you can however ignore any of these warnings.', 'wds' ); ?></p>
40
 
41
+ <div class="wds-accordion sui-accordion wds-draw-left">
 
 
 
 
42
  <?php
43
  $issue_types = array_unique( array_replace_recursive( $default_issue_types, $report->get_issue_types() ) );
44
 
45
  foreach ( $issue_types as $type ) {
46
  $this->_render( 'sitemap/sitemap-crawl-issues-' . $type, array(
47
+ 'type' => $type,
48
+ 'report' => $report,
49
+ 'open' => $open_type === $type,
50
+ 'ignored_tab_open' => $ignored_tab_open,
51
  ) );
52
  }
53
  ?>
includes/admin/templates/sitemap/sitemap-crawl-stats.php CHANGED
@@ -1,31 +1,68 @@
1
  <?php
2
- $active_issues = empty( $active_issues ) ? 0 : $active_issues;
3
- $report = empty( $report ) ? null : $report;
4
-
5
- if ( ! $report ) {
 
 
 
 
 
6
  return;
7
  }
 
 
 
8
  ?>
9
 
10
- <div class="wds-url-crawler-stats wds-report-stats">
11
- <div class="wds-report-score">
12
- <span class="wds-score <?php echo $active_issues > 0 ? 'wds-score-warning' : 'wds-score-success'; ?>">
13
- <?php echo intval( $active_issues ); ?>
14
- <span class="wds-total"></span>
15
- </span>
16
- <span class="wds-small-text"><?php esc_html_e( 'Sitemap Issues', 'wds' ); ?></span>
17
  </div>
18
 
19
- <div>
20
- <div class="wds-stacked-stats">
21
- <div>
22
- <div class="wds-stat-name"><?php esc_html_e( 'Total URLs Discovered', 'wds' ); ?></div>
23
- <div class="wds-stat-value"><?php echo intval( $report->get_meta( 'total' ) ); ?></div>
24
- </div>
25
- <div>
26
- <div class="wds-stat-name"><?php esc_html_e( 'Invisible URLs', 'wds' ); ?></div>
27
- <div class="wds-stat-value"><?php echo intval( $report->get_issues_count( 'sitemap' ) ); ?></div>
 
28
  </div>
29
  </div>
30
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  </div>
1
  <?php
2
+ /**
3
+ * @var Smartcrawl_SeoReport $crawl_report
4
+ */
5
+ $crawl_report = empty( $crawl_report ) ? null : $crawl_report;
6
+ if ( ! $crawl_report ) {
7
+ return;
8
+ }
9
+ $in_progress = $crawl_report->is_in_progress();
10
+ if ( ! $in_progress && ! $crawl_report->has_data() ) {
11
  return;
12
  }
13
+ $issue_count = (int) $crawl_report->get_issues_count();
14
+ $score_class = $issue_count > 0 ? 'sui-icon-info sui-warning' : 'sui-icon-check-tick sui-success';
15
+ $whitelabel_class = Smartcrawl_White_Label::get()->summary_class();
16
  ?>
17
 
18
+ <div class="sui-box sui-summary sui-summary-sm <?php echo esc_attr( $whitelabel_class ); ?>">
19
+ <div class="sui-summary-image-space">
 
 
 
 
 
20
  </div>
21
 
22
+ <div class="sui-summary-segment">
23
+ <div class="sui-summary-details">
24
+ <div class="wds-checkup-summary">
25
+ <?php if ( $in_progress ): ?>
26
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
27
+ <?php else: ?>
28
+ <span class="sui-summary-large"><?php echo esc_html( $issue_count ); ?></span>
29
+ <i class="<?php echo esc_attr( $score_class ); ?>"></i>
30
+ <?php endif; ?>
31
+ <span class="sui-summary-sub"><?php echo esc_html( _n( 'Sitemap Issue', 'Sitemap Issues', $issue_count, 'wds' ) ); ?></span>
32
  </div>
33
  </div>
34
  </div>
35
+
36
+ <div class="sui-summary-segment">
37
+ <ul class="sui-list">
38
+ <li>
39
+ <span class="sui-list-label"><?php esc_html_e( 'Total URLs Discovered', 'wds' ); ?></span>
40
+ <span class="sui-list-detail">
41
+ <?php if ( $in_progress ): ?>
42
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
43
+ <small><?php esc_html_e( 'Crawl in progress', 'wds' ); ?></small>
44
+ <?php else:
45
+ echo intval( $crawl_report->get_meta( 'total' ) );
46
+ endif; ?>
47
+ </span>
48
+ </li>
49
+ <li>
50
+ <span class="sui-list-label">
51
+ <?php esc_html_e( 'Invisible URLs', 'wds' ); ?>
52
+ <span class="sui-tooltip"
53
+ data-tooltip="<?php esc_html_e( 'URLs that are missing from your sitemap', 'wds' ); ?>">
54
+ <i class="sui-icon-info"></i>
55
+ </span>
56
+ </span>
57
+ <span class="sui-list-detail">
58
+ <?php if ( $in_progress ): ?>
59
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
60
+ <small><?php esc_html_e( 'Crawl in progress', 'wds' ); ?></small>
61
+ <?php else:
62
+ echo intval( $crawl_report->get_issues_count( 'sitemap' ) );
63
+ endif; ?>
64
+ </span>
65
+ </li>
66
+ </ul>
67
+ </div>
68
  </div>
includes/admin/templates/sitemap/sitemap-disabled.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $this->_render( 'disabled-component', array(
4
+ 'content' => sprintf(
5
+ '%s<br/>%s',
6
+ esc_html__( 'Automatically generate a full sitemap, regularly send updates to search engines and set up', 'wds' ),
7
+ esc_html__( 'SmartCrawl to automatically check URLs are discoverable by search engines.', 'wds' )
8
+ ),
9
+ 'image' => 'sitemap-disabled.svg',
10
+ 'component' => 'sitemap',
11
+ 'button_text' => esc_html__( 'Activate Sitemap', 'wds' ),
12
+ ) );
includes/admin/templates/sitemap/sitemap-extra-actions.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ if ( ! $is_member ) {
4
+ return;
5
+ }
6
+ $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
7
+ /**
8
+ * @var Smartcrawl_SeoReport $crawl_report
9
+ */
10
+ $crawl_report = empty( $_view['crawl_report'] ) ? null : $_view['crawl_report'];
11
+ if ( ! $crawl_report ) {
12
+ return;
13
+ }
14
+ $crawl_url = Smartcrawl_Sitemap_Settings::crawl_url();
15
+ $sitemap_enabled = Smartcrawl_Settings::get_setting( 'sitemap' );
16
+ if ( ! $sitemap_enabled ) {
17
+ return;
18
+ }
19
+ $end = $service->get_last_run_timestamp();
20
+ $end = ! empty( $end ) && is_numeric( $end )
21
+ ? date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $end )
22
+ : __( 'Never', 'wds' );
23
+ ?>
24
+
25
+ <span>
26
+ <?php printf(
27
+ esc_html__( 'Last crawl: %s', 'wds' ),
28
+ esc_html( $end )
29
+ ); ?>
30
+ </span>
31
+
32
+ <a href="<?php echo esc_attr( $crawl_url ); ?>" class="sui-button sui-button-blue wds-new-crawl-button"
33
+ style="<?php echo $crawl_report->is_in_progress() ? 'display:none;' : ''; ?>">
34
+ <?php esc_html_e( 'New crawl', 'wds' ); ?>
35
+ </a>
includes/admin/templates/sitemap/sitemap-no-crawler-data.php CHANGED
@@ -4,12 +4,12 @@ $action_url = Smartcrawl_Sitemap_Settings::crawl_url();
4
  $this->_render( 'disabled-component-inner', array(
5
  'content' => sprintf(
6
  '%s<br/>%s',
7
- __( 'Have SmartCrawl check for broken URLs, 404s, multiple redirections and other harmful', 'wds' ),
8
- __( 'issues that can reduce your ability to rank in search engines.', 'wds' )
9
  ),
10
- 'image' => 'url-crawler-disabled.png',
11
- 'button_text' => __( 'Begin Crawl', 'wds' ),
12
  'button_url' => $action_url,
 
13
  'premium_feature' => true,
14
  ) );
15
-
4
  $this->_render( 'disabled-component-inner', array(
5
  'content' => sprintf(
6
  '%s<br/>%s',
7
+ esc_html__( 'Have SmartCrawl check for broken URLs, 404s, multiple redirections and other harmful', 'wds' ),
8
+ esc_html__( 'issues that can reduce your ability to rank in search engines.', 'wds' )
9
  ),
10
+ 'image' => 'url-crawler-disabled.svg',
11
+ 'button_text' => esc_html__( 'Begin Crawl', 'wds' ),
12
  'button_url' => $action_url,
13
+ 'upgrade_tag' => 'smartcrawl_sitemap_crawler_upgrade_button',
14
  'premium_feature' => true,
15
  ) );
 
includes/admin/templates/sitemap/sitemap-occurrences-overlay.php DELETED
@@ -1,42 +0,0 @@
1
- <?php
2
- $issue_id = empty( $issue_id ) ? null : $issue_id;
3
- $issue = empty( $issue ) ? null : $issue;
4
-
5
- if ( ! $issue_id || ! $issue ) {
6
- return;
7
- }
8
- ?>
9
- <dialog class="dev-overlay wds-modal wds-occurrences"
10
- id="wds-issue-occurrences-<?php echo esc_attr( $issue_id ); ?>"
11
- title="<?php esc_attr_e( 'List Occurrences', 'wds' ); ?>">
12
-
13
- <div class="box-content">
14
- <div class="wds-issue-occurrences-list">
15
- <p>
16
- <?php
17
- printf(
18
- esc_html__( 'We found links to %s in these locations, you might want to remove these links or direct them somewhere else.', 'wds' ),
19
- '<strong>' . esc_html( $issue['path'] ) . '</strong>'
20
- );
21
- ?>
22
- </p>
23
- <ul class="wds-listing wds-path-occurrences">
24
- <?php if ( ! empty( $issue['origin'] ) ) : ?>
25
- <?php foreach ( $issue['origin'] as $origin ) : ?>
26
- <li>
27
- <?php $origin = is_array( $origin ) && ! empty( $origin[0] ) ? $origin[0] : $origin; ?>
28
-
29
- <a href="<?php echo is_string( $origin ) ? esc_url( $origin ) : esc_url( $origin[0] ); ?>">
30
- <?php echo is_string( $origin ) ? esc_html( $origin ) : esc_html( $origin[0] ); ?>
31
- </a>
32
- </li>
33
- <?php endforeach; ?>
34
- <?php endif; ?>
35
- </ul>
36
- </div>
37
- <div class="wds-box-footer">
38
- <button type="button"
39
- class="wds-cancel-button button button-dark-o"><?php esc_attr_e( 'Cancel', 'wds' ); ?></button>
40
- </div>
41
- </div>
42
- </dialog>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/sitemap/sitemap-part.php CHANGED
@@ -1,32 +1,37 @@
1
  <?php
 
 
2
  $part_excluded = ! empty( $_view['options'][ $item ] );
3
  $part_checked = $part_excluded ? 'checked' : '';
4
  $inverted = empty( $inverted ) ? false : $inverted;
 
 
5
  ?>
6
- <div class="wds-sitemap-part">
7
- <span class="wds-sitemap-part-label">
8
- <label
9
- class="wds-label wds-label-inline"
10
- for="<?php echo esc_attr( $item ); ?>">
11
- <?php echo esc_html( $item_label ); ?>
12
  </label>
13
- </span>
14
  <?php if ( ! empty( $item_name ) ) : ?>
15
- <span class="wds-sitemap-part-name">
16
  <?php echo esc_html( $item_name ); ?>
17
- </span>
18
  <?php endif; ?>
19
- <span class="wds-sitemap-part-toggle">
20
- <span class="toggle wds-toggle <?php echo $inverted ? 'wds-inverted-toggle' : ''; ?>">
 
 
 
21
  <input
22
- class="toggle-checkbox"
23
- value='<?php echo esc_attr( $item ); ?>'
24
  <?php echo esc_attr( $part_checked ); ?>
25
- id='<?php echo esc_attr( $item ); ?>'
26
- name="<?php echo esc_attr( $option_name ); ?>"
27
- type='checkbox'/>
28
 
29
- <label class="toggle-label" for="<?php echo esc_attr( $item ); ?>"></label>
 
30
  </span>
31
- </span>
32
- </div>
1
  <?php
2
+ $option_name = empty( $option_name ) ? '' : $option_name;
3
+ $item_label = empty( $item_label ) ? '' : $item_label;
4
  $part_excluded = ! empty( $_view['options'][ $item ] );
5
  $part_checked = $part_excluded ? 'checked' : '';
6
  $inverted = empty( $inverted ) ? false : $inverted;
7
+ $class = empty( $class ) ? '' : $class;
8
+ $tooltip_text = sprintf( esc_html__( 'Include/exclude %s from your sitemap' ), strtolower( $item_label ) );
9
  ?>
10
+ <tr class="<?php echo esc_attr( $class ); ?>">
11
+ <td colspan="<?php echo empty( $item_name ) ? 2 : 1; ?>">
12
+ <label for="<?php echo esc_attr( $item ); ?>">
13
+ <small><strong><?php echo esc_html( $item_label ); ?></strong></small>
 
 
14
  </label>
15
+ </td>
16
  <?php if ( ! empty( $item_name ) ) : ?>
17
+ <td>
18
  <?php echo esc_html( $item_name ); ?>
19
+ </td>
20
  <?php endif; ?>
21
+ <td>
22
+ <span class="sui-tooltip sui-tooltip-top-right"
23
+ data-tooltip="<?php echo esc_attr( $tooltip_text ); ?>">
24
+ <label class="sui-toggle wds-toggle <?php echo $inverted ? 'wds-inverted-toggle' : ''; ?>"
25
+ for="<?php echo esc_attr( $item ); ?>">
26
  <input
27
+ value="<?php echo esc_attr( $item ); ?>"
 
28
  <?php echo esc_attr( $part_checked ); ?>
29
+ id="<?php echo esc_attr( $item ); ?>"
30
+ name="<?php echo esc_attr( $option_name ); ?>"
31
+ type="checkbox"/>
32
 
33
+ <span class="sui-toggle-slider"></span>
34
+ </label>
35
  </span>
36
+ </td>
37
+ </tr>
includes/admin/templates/sitemap/sitemap-progress-bar.php CHANGED
@@ -1,10 +1,12 @@
1
  <?php $progress = empty( $progress ) ? 0 : $progress; ?>
2
 
3
  <div class="wds-crawl-results-report wds-report">
 
4
  <div class="wds-url-crawler-progress">
5
  <?php
6
  $this->_render( 'progress-bar', array(
7
- 'progress' => $progress,
 
8
  ) );
9
  ?>
10
  <?php $this->_render( 'progress-notice' ); ?>
1
  <?php $progress = empty( $progress ) ? 0 : $progress; ?>
2
 
3
  <div class="wds-crawl-results-report wds-report">
4
+ <p><?php esc_html_e( "We're looking for issues with your sitemap, please wait…", 'wds' ); ?></p>
5
  <div class="wds-url-crawler-progress">
6
  <?php
7
  $this->_render( 'progress-bar', array(
8
+ 'progress' => $progress,
9
+ 'progress_state' => esc_html__( 'Crawling website...', 'wds' ),
10
  ) );
11
  ?>
12
  <?php $this->_render( 'progress-notice' ); ?>
includes/admin/templates/sitemap/sitemap-redirect-overlay.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
- $issue_id = empty( $issue_id ) ? null : $issue_id;
3
- $issue = empty( $issue ) ? null : $issue;
4
- $issue_path = smartcrawl_get_array_value( $issue, 'path' );
5
-
6
- if ( ! $issue_id || ! $issue || ! $issue_path ) {
7
- return;
8
- }
9
-
10
- $rmodel = new Smartcrawl_Model_Redirection();
11
- $redirections = $rmodel->get_all_redirections();
12
- $redirection_target = ! empty( $redirections[ $issue_path ] ) ? esc_url( $redirections[ $issue_path ] ) : '';
13
- ?>
14
- <dialog class="dev-overlay wds-modal wds-redirect wds-report"
15
- id="wds-issue-redirect-<?php echo esc_attr( $issue_id ); ?>"
16
- title="<?php esc_attr_e( 'Redirect URL', 'wds' ); ?>">
17
-
18
- <div class="box-content modal wds-form"
19
- data-issue-id="<?php echo esc_attr( $issue_id ); ?>">
20
-
21
- <p>
22
- <?php
23
- printf(
24
- esc_html__( 'Choose where to redirect %s', 'wds' ),
25
- '<strong>' . esc_html( $issue_path ) . '</strong>'
26
- );
27
- ?>
28
- </p>
29
- <div class="wds-table-fields wds-table-fields-stacked">
30
- <div class="label">
31
- <label for="wds-redirect-target-<?php echo esc_attr( $issue_id ); ?>"
32
- class="wds-label"><?php esc_html_e( 'New URL', 'wds' ); ?></label>
33
- </div>
34
- <div class="fields">
35
- <input id="wds-redirect-target-<?php echo esc_attr( $issue_id ); ?>"
36
- type="url"
37
- name="redirect"
38
- value="<?php echo esc_attr( $redirection_target ); ?>"
39
- class="wds-field"
40
- placeholder="<?php esc_attr_e( 'Enter new URL', 'wds' ); ?>"/>
41
- <p class="wds-field-legend">
42
- <?php
43
- $advanced_url = Smartcrawl_Settings_Admin::admin_url( Smartcrawl_Settings::TAB_AUTOLINKS );
44
- printf(
45
- esc_html__( 'Formats include relative (E.g. %1$s) or absolute URLs (E.g. %2$s or %3$s). This will set up a 301 (permanent) redirect from one URL to another, you can view all your redirections under %4$s.', 'wds' ),
46
- sprintf( '<strong>%s</strong>', esc_html__( '/cats', 'wds' ) ),
47
- sprintf( '<strong>%s</strong>', esc_html__( 'www.website.com/cats', 'wds' ) ),
48
- sprintf( '<strong>%s</strong>', esc_html__( 'https://website.com/cats', 'wds' ) ),
49
- sprintf( '<strong><a href="%s">%s</a></strong>', esc_url( $advanced_url ), esc_html__( 'Advanced Tools', 'wds' ) )
50
- );
51
- ?>
52
- </p>
53
- </div>
54
- </div>
55
- <div class="wds-box-footer">
56
- <input type="hidden" name="source" value="<?php echo esc_url( $issue_path ); ?>"/>
57
- <?php wp_nonce_field( 'wds-redirect', 'wds-redirect' ); ?>
58
- <button type="button"
59
- class="button button-dark-o wds-cancel-button wds-disabled-during-request"><?php esc_html_e( 'Cancel', 'wds' ); ?></button>
60
- <button type="button"
61
- class="button wds-action-button wds-submit-redirect wds-button-with-loader wds-button-with-left-loader wds-disabled-during-request"><?php esc_html_e( 'Add Redirect', 'wds' ); ?></button>
62
- </div>
63
- </div>
64
- </dialog>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/sitemap/sitemap-reporting-dow-select.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
+ $crawl_dow = isset( $_view['options']['crawler-dow'] ) ? $_view['options']['crawler-dow'] : false;
4
+ $is_member = empty( $_view['is_member'] ) ? false : true;
5
+ $disabled = $is_member ? '' : 'disabled';
6
+ $monday = strtotime( 'this Monday' );
7
+ ?>
8
+ <label for="wds-crawler-dow"
9
+ class="sui-label"><?php esc_html_e( 'Day of the week', 'wds' ); ?></label>
10
+
11
+ <select class="sui-select" <?php echo esc_attr( $disabled ); ?>
12
+ id="wds-crawler-dow"
13
+ data-minimum-results-for-search="-1"
14
+ name="<?php echo esc_attr( $option_name ); ?>[crawler-dow]">
15
+
16
+ <?php foreach ( range( 0, 6 ) as $dow ) : ?>
17
+ <option value="<?php echo esc_attr( $dow ); ?>"
18
+ <?php selected( $dow, $crawl_dow ); ?>>
19
+ <?php echo esc_html( date_i18n( 'l', $monday + ( $dow * DAY_IN_SECONDS ) ) ); ?>
20
+ </option>
21
+ <?php endforeach; ?>
22
+ </select>
includes/admin/templates/sitemap/sitemap-reporting-schedule.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $cron = Smartcrawl_Controller_Cron::get();
3
+ // This does the actual rescheduling
4
+ $cron->set_up_schedule();
5
+ $crawler_freq = empty( $_view['options']['crawler-frequency'] ) ? false : $_view['options']['crawler-frequency'];
6
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
7
+ ?>
8
+
9
+ <div class="sui-side-tabs sui-tabs">
10
+ <div data-tabs>
11
+ <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
12
+ <div data-frequency="<?php echo esc_attr( $key ); ?>"
13
+ class="<?php echo $key === $crawler_freq ? 'active' : ''; ?>">
14
+ <?php echo esc_html( $label ); ?>
15
+ </div>
16
+ <?php endforeach; ?>
17
+ </div>
18
+
19
+ <div data-panes>
20
+ <div class="wds-single-pane">
21
+ <label class="hidden">
22
+ <select class="none-sui wds-conditional-parent"
23
+ id="wds-crawler-frequency"
24
+ name="<?php echo esc_attr( $option_name ); ?>[crawler-frequency]">
25
+
26
+ <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
27
+ <option
28
+ value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $crawler_freq ); ?>>
29
+ <?php echo esc_html( $label ); ?>
30
+ </option>
31
+ <?php endforeach; ?>
32
+ </select>
33
+ </label>
34
+
35
+ <div class="sui-row">
36
+ <div class="sui-col wds-conditional-child"
37
+ data-parent="wds-crawler-frequency"
38
+ data-parent-val="weekly,monthly">
39
+
40
+ <div class="sui-form-field">
41
+ <?php $this->_render( 'sitemap/sitemap-reporting-dow-select' ); ?>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="sui-col">
46
+ <div class="sui-form-field">
47
+ <?php $this->_render( 'sitemap/sitemap-reporting-tod-select' ); ?>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
includes/admin/templates/sitemap/sitemap-reporting-title-pro-tag.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $is_member = empty( $_view['is_member'] ) ? false : true;
3
+ if ( $is_member ) {
4
+ return;
5
+ }
6
+ $upgrade_url = 'https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_sitemap_reporting_pro_tag';
7
+ ?>
8
+ <a target="_blank" href="<?php echo esc_attr( $upgrade_url ); ?>">
9
+ <span class="sui-tag sui-tag-pro sui-tooltip"
10
+ data-tooltip="<?php esc_attr_e( 'Get SmartCrawl Pro today Free', 'wds' ); ?>">
11
+ <?php esc_html_e( 'Pro', 'wds' ); ?>
12
+ </span>
13
+ </a>
includes/admin/templates/sitemap/sitemap-reporting-tod-select.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $option_name = empty( $_view['option_name'] ) ? '' : $_view['option_name'];
3
+ $crawl_tod = isset( $_view['options']['crawler-tod'] ) ? $_view['options']['crawler-tod'] : false;
4
+ $is_member = empty( $_view['is_member'] ) ? false : true;
5
+ $disabled = $is_member ? '' : 'disabled';
6
+ $midnight = strtotime( 'today' );
7
+ ?>
8
+
9
+ <label for="wds-crawler-tod" class="sui-label">
10
+ <?php esc_html_e( 'Time of day', 'wds' ); ?>
11
+ </label>
12
+
13
+ <select class="sui-select" <?php echo esc_attr( $disabled ); ?>
14
+ id="wds-crawler-tod"
15
+ data-minimum-results-for-search="-1"
16
+ name="<?php echo esc_attr( $option_name ); ?>[crawler-tod]">
17
+
18
+ <?php foreach ( range( 0, 23 ) as $tod ) : ?>
19
+ <option value="<?php echo esc_attr( $tod ); ?>"
20
+ <?php selected( $tod, $crawl_tod ); ?>>
21
+ <?php echo esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $tod * HOUR_IN_SECONDS ) ) ); ?>
22
+ </option>
23
+ <?php endforeach; ?>
24
+ </select>
includes/admin/templates/sitemap/sitemap-section-advanced.php CHANGED
@@ -4,32 +4,32 @@ $engines = empty( $engines ) ? array() : $engines;
4
 
5
  <?php
6
  $this->_render( 'toggle-group', array(
7
- 'label' => __( 'Include images', 'wds' ),
8
- 'description' => __( 'If your posts contain imagery you would like others to be able to search, this setting will help Google Images index them correctly.', 'wds' ),
9
  'items' => array(
10
  'sitemap-images' => array(
11
- 'label' => __( 'Include image items with the sitemap', 'wds' ),
12
- 'description' => __( 'Note: When uploading attachments to posts, be sure to add titles and captions that clearly describe your images.', 'wds' ),
13
  'value' => '1',
14
  ),
15
  ),
16
  ) );
17
 
18
  $this->_render( 'toggle-group', array(
19
- 'label' => __( 'Auto-notify search engines', 'wds' ),
20
- 'description' => __( 'Instead of waiting for search engines to crawl your website you can automatically submit your sitemap whenever it changes.', 'wds' ),
21
  'separator' => true,
22
  'items' => $engines,
23
  ) );
24
 
25
  $this->_render( 'toggle-group', array(
26
- 'label' => __( 'Style sitemap', 'wds' ),
27
- 'description' => __( 'Adds some nice styling to your sitemap.', 'wds' ),
28
  'separator' => true,
29
  'items' => array(
30
  'sitemap-stylesheet' => array(
31
- 'label' => __( 'Include stylesheet with sitemap', 'wds' ),
32
- 'description' => __( 'Note: This doesn’t affect your SEO and is purely visual.', 'wds' ),
33
  'value' => '1',
34
  ),
35
  ),
@@ -40,19 +40,42 @@ $this->_render( 'toggle-group', array(
40
  <div class="wds-toggleable wds-disable-updates <?php echo $automatic_updates_disabled ? '' : 'inactive'; ?>">
41
  <?php
42
  $this->_render( 'toggle-group', array(
43
- 'label' => __( 'Automatic sitemap updates', 'wds' ),
44
- 'description' => __( 'Choose whether or not you want SmartCrawl to update your Sitemap automatically when you publish new pages, posts, post types or taxonomies.', 'wds' ),
45
  'separator' => true,
46
  'items' => array(
47
  'sitemap-disable-automatic-regeneration' => array(
48
- 'label' => __( 'Automatically update my sitemap', 'wds' ),
49
  'inverted' => true,
50
  'html_description' => sprintf(
51
- '<div class="wds-toggleable-inside wds-notice wds-notice-warning"><p>%s</p></div>',
52
- __( 'Your sitemap isnt being updated automatically. Click Save Settings below to regenerate your sitemap.', 'wds' )
53
  ),
54
  ),
55
  ),
56
  ) );
57
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  </div>
4
 
5
  <?php
6
  $this->_render( 'toggle-group', array(
7
+ 'label' => esc_html__( 'Include images', 'wds' ),
8
+ 'description' => esc_html__( 'If your posts contain imagery you would like others to be able to search, this setting will help Google Images index them correctly.', 'wds' ),
9
  'items' => array(
10
  'sitemap-images' => array(
11
+ 'label' => esc_html__( 'Include image items with the sitemap', 'wds' ),
12
+ 'description' => esc_html__( 'Note: When uploading attachments to posts, be sure to add titles and captions that clearly describe your images.', 'wds' ),
13
  'value' => '1',
14
  ),
15
  ),
16
  ) );
17
 
18
  $this->_render( 'toggle-group', array(
19
+ 'label' => esc_html__( 'Auto-notify search engines', 'wds' ),
20
+ 'description' => esc_html__( 'Instead of waiting for search engines to crawl your website you can automatically submit your sitemap whenever it changes.', 'wds' ),
21
  'separator' => true,
22
  'items' => $engines,
23
  ) );
24
 
25
  $this->_render( 'toggle-group', array(
26
+ 'label' => esc_html__( 'Style sitemap', 'wds' ),
27
+ 'description' => esc_html__( 'Adds some nice styling to your sitemap.', 'wds' ),
28
  'separator' => true,
29
  'items' => array(
30
  'sitemap-stylesheet' => array(
31
+ 'label' => esc_html__( 'Include stylesheet with sitemap', 'wds' ),
32
+ 'description' => esc_html__( 'Note: This doesn’t affect your SEO and is purely visual.', 'wds' ),
33
  'value' => '1',
34
  ),
35
  ),
40
  <div class="wds-toggleable wds-disable-updates <?php echo $automatic_updates_disabled ? '' : 'inactive'; ?>">
41
  <?php
42
  $this->_render( 'toggle-group', array(
43
+ 'label' => esc_html__( 'Automatic sitemap updates', 'wds' ),
44
+ 'description' => esc_html__( 'Choose whether or not you want SmartCrawl to update your Sitemap automatically when you publish new pages, posts, post types or taxonomies.', 'wds' ),
45
  'separator' => true,
46
  'items' => array(
47
  'sitemap-disable-automatic-regeneration' => array(
48
+ 'label' => esc_html__( 'Automatically update my sitemap', 'wds' ),
49
  'inverted' => true,
50
  'html_description' => sprintf(
51
+ '<div class="wds-toggleable-inside sui-notice sui-notice-warning"><p>%s</p></div>',
52
+ esc_html__( "Your sitemap isn't being updated automatically. Click Save Settings below to regenerate your sitemap.", 'wds' )
53
  ),
54
  ),
55
  ),
56
  ) );
57
  ?>
58
+ <div></div>
59
+ </div>
60
+
61
+ <div class="sui-box-settings-row">
62
+ <div class="sui-box-settings-col-1">
63
+ <label class="sui-settings-label">
64
+ <?php esc_html_e( 'Deactivate', 'wds' ); ?>
65
+ </label>
66
+ <p class="sui-description">
67
+ <?php esc_html_e( 'If you no longer wish to use the Sitemap generator, you can deactivate it.', 'wds' ); ?>
68
+ </p>
69
+ </div>
70
+ <div class="sui-box-settings-col-2">
71
+ <button type="submit" name="deactivate-sitemap-component"
72
+ class="sui-button sui-button-ghost">
73
+ <i class="sui-icon-power-on-off" aria-hidden="true"></i>
74
+ <?php esc_html_e( 'Deactivate', 'wds' ); ?>
75
+ </button>
76
+
77
+ <p class="sui-description">
78
+ <?php esc_html_e( 'Note: Sitemaps are crucial for helping search engines index all of your content effectively. We highly recommend you have a valid sitemap.', 'wds' ); ?>
79
+ </p>
80
+ </div>
81
  </div>
includes/admin/templates/sitemap/sitemap-section-reporting.php CHANGED
@@ -1,27 +1,45 @@
1
  <?php
2
- $service = Smartcrawl_Service::get( Smartcrawl_Service::SERVICE_SEO );
3
  $cron = Smartcrawl_Controller_Cron::get();
4
  $option_name = $_view['option_name'];
5
 
6
  // This does the actual rescheduling
7
  $cron->set_up_schedule();
8
- $crawler_cron_enabled = $_view['options']['crawler-cron-enable'];
 
9
  $toggle_field_name = $option_name . '[crawler-cron-enable]';
 
 
 
10
  ?>
11
 
12
- <?php if ( ! $service->is_member() ) : ?>
13
- <div class="wds-obfuscate-section"></div>
14
- <?php endif; ?>
 
15
 
16
- <div class="wds-table-fields wds-toggleable">
17
- <div class="label">
18
- <label class="wds-label"
 
 
 
 
 
 
 
 
 
 
19
  for="<?php echo esc_attr( $toggle_field_name ); ?>">
20
 
21
- <?php esc_html_e( 'Schedule Crawl', 'wds' ); ?>
22
  </label>
 
 
 
 
23
  </div>
24
- <div class="fields wds-toggleable <?php echo $crawler_cron_enabled ? '' : 'inactive'; ?>">
25
  <?php
26
  $this->_render( 'toggle-item', array(
27
  'field_name' => $toggle_field_name,
@@ -30,74 +48,38 @@ $toggle_field_name = $option_name . '[crawler-cron-enable]';
30
  'item_label' => esc_html__( 'Run regular URL crawls', 'wds' ),
31
  ) );
32
  ?>
33
- <div class="wds-toggleable-inside wds-toggleable-inside-box">
34
- <div class="wds-table-fields wds-table-fields-stacked">
35
- <div class="label">
36
- <label for="wds-crawler-frequency"
37
- class="wds-label"><?php esc_html_e( 'Frequency', 'wds' ); ?></label>
38
- </div>
39
- <div class="fields">
40
- <select class="select-container wds-conditional-parent"
41
- id="wds-crawler-frequency"
42
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[crawler-frequency]"
43
- style="width: 100%">
44
-
45
- <?php foreach ( $cron->get_frequencies() as $key => $label ) : ?>
46
- <option
47
- value="<?php echo esc_attr( $key ); ?>" <?php selected( $key, $_view['options']['crawler-frequency'] ); ?>>
48
- <?php echo esc_html( $label ); ?>
49
- </option>
50
- <?php endforeach; ?>
51
- </select>
52
- </div>
53
- </div>
54
 
55
- <div class="wds-table-fields wds-table-fields-stacked wds-conditional-child"
56
- data-parent="wds-crawler-frequency"
57
- data-parent-val="weekly,monthly">
58
 
59
- <div class="label">
60
- <label for="wds-crawler-dow"
61
- class="wds-label"><?php esc_html_e( 'Day of the week', 'wds' ); ?></label>
62
- </div>
63
- <div class="fields">
64
- <select class="select-container"
65
- id="wds-crawler-dow"
66
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[crawler-dow]"
67
- style="width: 100%">
68
-
69
- <?php $monday = strtotime( 'this Monday' ); ?>
70
- <?php foreach ( range( 0, 6 ) as $dow ) : ?>
71
- <option value="<?php echo esc_attr( $dow ); ?>"
72
- <?php selected( $dow, $_view['options']['crawler-dow'] ); ?>>
73
- <?php echo esc_html( date_i18n( 'l', $monday + ( $dow * DAY_IN_SECONDS ) ) ); ?>
74
- </option>
75
- <?php endforeach; ?>
76
- </select>
77
- </div>
78
- </div>
79
-
80
- <div class="wds-table-fields wds-table-fields-stacked">
81
- <div class="label">
82
- <label for="wds-crawler-tod" class="wds-label"><?php esc_html_e( 'Time of day', 'wds' ); ?></label>
83
- </div>
84
- <div class="fields">
85
- <select class="select-container"
86
- id="wds-crawler-tod"
87
- name="<?php echo esc_attr( $_view['option_name'] ); ?>[crawler-tod]"
88
- style="width: 100%">
89
-
90
- <?php $midnight = strtotime( 'today' ); ?>
91
- <?php foreach ( range( 0, 23 ) as $tod ) : ?>
92
- <option value="<?php echo esc_attr( $tod ); ?>"
93
- <?php selected( $tod, $_view['options']['crawler-tod'] ); ?>>
94
- <?php echo esc_html( date_i18n( get_option( 'time_format' ), $midnight + ( $tod * HOUR_IN_SECONDS ) ) ); ?>
95
- </option>
96
- <?php endforeach; ?>
97
- </select>
98
- </div>
99
- </div>
100
  </div>
101
  </div>
102
 
103
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
 
2
  $cron = Smartcrawl_Controller_Cron::get();
3
  $option_name = $_view['option_name'];
4
 
5
  // This does the actual rescheduling
6
  $cron->set_up_schedule();
7
+ $is_member = empty( $_view['is_member'] ) ? false : true;
8
+ $crawler_cron_enabled = ! empty( $_view['options']['crawler-cron-enable'] ) && $is_member;
9
  $toggle_field_name = $option_name . '[crawler-cron-enable]';
10
+ $dash_profile_data = smartcrawl_get_dash_profile_data();
11
+ $crawler_freq = empty( $_view['options']['crawler-frequency'] ) ? false : $_view['options']['crawler-frequency'];
12
+ $frequencies = $cron->get_frequencies();
13
  ?>
14
 
15
+ <div class="wds-upsell-tab-description">
16
+ <div>
17
+ <p><?php esc_html_e( 'Set up SmartCrawl to automatically crawl your URLs daily, weekly or monthly and send an email report to your inbox.', 'wds' ); ?></p>
18
+ </div>
19
 
20
+ <?php if ( $crawler_cron_enabled && $dash_profile_data && $crawler_freq ): ?>
21
+ <?php $this->_render( 'notice', array(
22
+ 'message' => sprintf(
23
+ 'Automatic crawls are enabled and sending %s to 1 recipient.',
24
+ smartcrawl_get_array_value( $frequencies, $crawler_freq )
25
+ ),
26
+ 'class' => 'sui-notice-info',
27
+ ) ); ?>
28
+ <?php endif; ?>
29
+ </div>
30
+ <div class="sui-box-settings-row <?php echo $is_member ? '' : 'sui-disabled'; ?>">
31
+ <div class="sui-box-settings-col-1">
32
+ <label class="sui-settings-label"
33
  for="<?php echo esc_attr( $toggle_field_name ); ?>">
34
 
35
+ <?php esc_html_e( 'Schedule automatic crawls', 'wds' ); ?>
36
  </label>
37
+
38
+ <span class="sui-description">
39
+ <?php esc_html_e( 'Enable automated sitemap crawl reports for this website.', 'wds' ); ?>
40
+ </span>
41
  </div>
42
+ <div class="sui-box-settings-col-2 wds-toggleable <?php echo $crawler_cron_enabled ? '' : 'inactive'; ?>">
43
  <?php
44
  $this->_render( 'toggle-item', array(
45
  'field_name' => $toggle_field_name,
48
  'item_label' => esc_html__( 'Run regular URL crawls', 'wds' ),
49
  ) );
50
  ?>
51
+ <div class="wds-toggleable-inside sui-border-frame sui-toggle-content">
52
+ <?php if ( $dash_profile_data ): ?>
53
+ <small><strong><?php esc_html_e( 'Recipient', 'wds' ); ?></strong></small>
54
+ <?php $this->_render( 'email-recipients', array(
55
+ 'id' => 'wds-sitemap-email-recipients',
56
+ 'disable_addition' => true,
57
+ 'email_recipients' => array(
58
+ array(
59
+ 'name' => $dash_profile_data->user_login,
60
+ 'email' => $dash_profile_data->user_email,
61
+ ),
62
+ ),
63
+ ) ); ?>
64
+ <p></p>
65
+ <?php endif; ?>
 
 
 
 
 
 
66
 
67
+ <small><strong><?php esc_html_e( 'Schedule', 'wds' ); ?></strong></small>
 
 
68
 
69
+ <?php $this->_render( 'sitemap/sitemap-reporting-schedule' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  </div>
71
  </div>
72
 
73
  </div>
74
+
75
+ <?php if ( ! $is_member ): ?>
76
+ <?php $this->_render( 'mascot-message', array(
77
+ 'key' => 'seo-checkup-upsell',
78
+ 'dismissible' => false,
79
+ 'message' => sprintf(
80
+ '%s <a target="_blank" href="https://premium.wpmudev.org/project/smartcrawl-wordpress-seo/?utm_source=smartcrawl&utm_medium=plugin&utm_campaign=smartcrawl_sitemap_reporting_upsell_notice">%s</a>',
81
+ esc_html__( 'Unlock automated crawls of your URLs to always stay on top of any issues with SmartCrawl Pro. Get Sitemap Reports as part of a WPMU DEV membership along with other pro plugins and services, 24/7 support and much more', 'wds' ),
82
+ esc_html__( '- Try it all FREE today', 'wds' )
83
+ ),
84
+ ) ); ?>
85
+ <?php endif; ?>
includes/admin/templates/sitemap/sitemap-section-settings.php CHANGED
@@ -14,131 +14,135 @@ $ignore_urls = empty( $ignore_urls ) ? '' : $ignore_urls;
14
  $ignore_post_ids = empty( $ignore_post_ids ) ? '' : $ignore_post_ids;
15
  ?>
16
 
17
- <?php if ( Smartcrawl_Xml_Sitemap::is_sitemap_path_writable() ) { ?>
18
- <div class="wds-notice wds-notice-success">
19
- <p>
20
- <?php
21
- printf(
22
-
14
  $ignore_post_ids = empty( $ignore_post_ids ) ? '' : $ignore_post_ids;
15
  ?>
16