16 Commits

Author SHA1 Message Date
360580e643 Merge pull request 'Changed from WordPress Service Pack to WordPress Security Pack.' (#4) from chore/change-to-new-name-for-wpsp into main
Reviewed-on: #4
Reviewed-by: gdh <gdh@1984.is>
2026-05-06 09:40:50 +00:00
059194942e Update plugin version to 1.2.0 in preparation for release. 2026-03-23 10:16:07 +00:00
a0167d146d Changed from WordPress Service Pack to WordPress Security Pack. 2026-03-19 15:40:32 +00:00
gdh
84a9bd93cf Merge pull request 'Plugin protection: Only 1984-hosting-support and Patchstack when latter is active' (#3) from update/protect-plugins-2026a into main
Reviewed-on: #3
Reviewed-by: Sævar Bergur Sigurgeirsson <saevar@1984.is>
2026-01-06 14:52:39 +00:00
gdh
085b1ccf31 Update 1984-hosting-support.php 2026-01-05 15:35:44 +00:00
gdh
477b87b5a4 Update 1984-hosting-support.php 2026-01-05 15:35:01 +00:00
gdh
454572ede2 Merge pull request 'OP#499 - Explain PS Plugin to customer in WP Admin' (#2) from feature/OP#499-explain-patchstack-plugin-to-customer-in-wp-admin into main
Reviewed-on: #2
2025-12-15 10:10:19 +00:00
7892d30d22 Fix inconsistent indentation in 1984-hosting-support.php. 2025-12-11 14:18:46 +00:00
9bffb8b5e9 Addressing PR comment. 2025-12-10 15:30:31 +00:00
gdh
af9431da4e Update languages/hostingsupport1984-is_IS.po 2025-12-08 16:05:44 +00:00
gdh
dd313728da Update languages/hostingsupport1984.pot 2025-12-08 16:04:36 +00:00
gdh
a7a00489a4 Update languages/hostingsupport1984-is_IS.po 2025-12-08 16:02:12 +00:00
gdh
762fc74859 Update languages/hostingsupport1984-is_IS.po 2025-12-08 16:01:47 +00:00
9becfb4abd First draft 2025-12-03 13:36:10 +00:00
gdh
6d76533d1f Update 1984-hosting-support.php 2025-08-11 12:59:10 +00:00
f133040e3e Do not enable auto-update if Patchstack is active on the site 2025-08-11 12:57:39 +00:00
7 changed files with 445 additions and 86 deletions

View File

@@ -2,11 +2,13 @@
/*
* Plugin Name: 1984 Hosting Support
* Version: 1.0
* Author: 1984 ehf
* Version: 1.2.0
* Author: 1984 ehf.
* Author URI: https://1984.hosting
* Description: Support plugin for 1984 Hosting customers.
* Update URI: https://git.1984.is/1984/1984-hosting-support/
* Text Domain: hostingsupport1984
* Domain Path: /languages
*/
/**
@@ -19,8 +21,9 @@
* There are other classes that may depend on this file, so only remove it if
* you do not intend to use the plugin.
*/
class HostingSupport1984 {
const HOSTING_SUPPORT_VERSION = '0.4.0';
const HOSTING_SUPPORT_VERSION = '1.2.0';
/**
* Construct a new HostingSupport1984 object
@@ -51,6 +54,51 @@ class HostingSupport1984 {
'switch_theme',
array( $this, 'theme_switch_hook' )
);
// Add a clear warning on the Patchstack plugin row to discourage removal.
add_filter(
'plugin_row_meta',
array(
$this,
'add_patchstack_warning_row_meta',
),
10,
2
);
// Prevent deactivation/deletion of this plugin and Patchstack via UI links.
add_filter(
'plugin_action_links',
array(
$this,
'filter_plugin_action_links',
),
10,
4
);
add_filter(
'network_admin_plugin_action_links',
array(
$this,
'filter_plugin_action_links',
),
10,
4
);
// Guard against direct requests (single and bulk) on Plugins screens and updater endpoints.
add_action( 'load-plugins.php', array(
$this,
'protect_plugins_admin_actions',
) );
add_action( 'load-plugins-network.php', array(
$this,
'protect_plugins_admin_actions',
) );
add_action( 'load-update.php', array(
$this,
'protect_plugins_admin_actions',
) );
}
/**
@@ -69,8 +117,15 @@ class HostingSupport1984 {
/**
* On activation of this plugin, set auto-update option for core,
* plus enable auto-updates for installed plugins and themes.
*
* This is skipped if Patchstack is active on the site.
*/
public function activation_hook() {
if ( $this->is_patchstack_active() ) {
// In case Patchstack is active, do not continue.
return;
}
// Auto-update WordPress core.
update_site_option( 'auto_update_core_major', 'enabled' );
@@ -84,10 +139,26 @@ class HostingSupport1984 {
update_site_option( 'auto_update_themes', array_keys( $all_themes ) );
}
/**
* Check if Patchstack is enabled.
*
* @return Boolean
*/
public function is_patchstack_active() {
return is_plugin_active( 'patchstack/patchstack.php' );
}
/**
* On plugin activation, add to auto-updated list of plugins.
*
* This is skipped if Patchstack is active on the site.
*/
public function plugin_activation_hook( $plugin ) {
if ( $this->is_patchstack_active() ) {
// In case Patchstack is active, do not continue.
return;
}
$auto_updated_plugins = (array) get_site_option( 'auto_update_plugins', array() );
$auto_updated_plugins[] = $plugin;
@@ -96,11 +167,170 @@ class HostingSupport1984 {
/**
* On theme switch, enable auto-update for all themes.
*
* This is skipped if Patchstack is active on the site.
*/
public function theme_switch_hook( $theme ) {
if ( $this->is_patchstack_active() ) {
// In case Patchstack is active, do not continue.
return;
}
$all_themes = wp_get_themes();
update_site_option( 'auto_update_themes', array_keys( $all_themes ) );
}
/**
* Append a prominent warning to the Patchstack plugin row in the Plugins screen.
*
* @param array $links Existing row meta links.
* @param string $file Plugin file path about plugins directory.
*
* @return array Modified row meta-links.
*/
public function add_patchstack_warning_row_meta( array $links, string $file ): array {
// Only show the warning on the Patchstack row AND only if Patchstack is active.
if ( 'patchstack/patchstack.php' !== $file || ! $this->is_patchstack_active() ) {
return $links;
}
$warning_text =
__( '1984 Hosting: Please do not deactivate or delete this plugin - part of your WordPress Security Pack.', 'hostingsupport1984' );
$logo_1984_url = plugins_url( 'icons/1984-hosting-logo.webp', __FILE__ );
$logo_patchstack = plugins_url( 'icons/patchstack-logo.svg', __FILE__ );
$title_1984 = __( 'Visit 1984 Hosting Homepage', 'hostingsupport1984' );
$title_patchstack = __( 'Visit Patchstack Homepage', 'hostingsupport1984' );
$container_open =
'<span class="description" style="color:#b32d2e;font-weight:700;display:inline-grid;grid-template-columns:auto 1fr;column-gap:6px;row-gap:4px;align-items:center;line-height:1.5;vertical-align:middle;">';
$warning_icon =
'<span class="dashicons dashicons-warning" aria-hidden="true" style="color:#b32d2e;grid-column:1;"></span>';
$text_html = '<span style="grid-column:2;">' . esc_html( $warning_text ) . '</span>';
$logos_html =
'<span style="grid-column:2;display:inline-flex;align-items:center;gap:4px;">'
.
'<a href="https://1984.hosting" target="_blank" rel="noopener noreferrer" title="' . esc_attr( $title_1984 ) . '" aria-label="' . esc_attr( $title_1984 ) . '">'
.
'<img src="' . esc_url( $logo_1984_url ) . '" alt="1984 Hosting" style="height:16px;width:auto;display:inline-block;" />'
.
'</a>'
.
'<a href="https://patchstack.com" target="_blank" rel="noopener noreferrer" title="' . esc_attr( $title_patchstack ) . '" aria-label="' . esc_attr( $title_patchstack ) . '">'
.
'<img src="' . esc_url( $logo_patchstack ) . '" alt="Patchstack" style="height:16px;width:auto;display:inline-block;" />'
.
'</a>'
.
'</span>';
$links[] = $container_open . $warning_icon . $text_html . $logos_html . '</span>';
return $links;
}
/**
* Remove Deactivate/Delete action links for protected plugins (single and network admin).
*
* @param array $actions
* @param string $plugin_file
* @param array $plugin_data
* @param string $context
*
* @return array
*/
public function filter_plugin_action_links(
array $actions, string $plugin_file, array $plugin_data,
string $context
): array {
if ( $this->is_protected_plugin( $plugin_file ) ) {
unset( $actions['deactivate'] );
unset( $actions['delete'] );
}
return $actions;
}
/**
* Determine if a plugin file is in the protected list.
*
* @param string $plugin_file
*
* @return bool
*/
private function is_protected_plugin( string $plugin_file ): bool {
return in_array( $plugin_file, $this->get_protected_plugins(), true );
}
/**
* Return plugin basenames that must be protected from deactivation/deletion.
*
* @return string[]
*/
private function get_protected_plugins(): array {
if ( ! $this->is_patchstack_active() ) {
return array();
}
// Protect this plugin.
$own = plugin_basename( __FILE__ );
$protected = array( $own );
// Also protect Patchstack.
$protected[] = 'patchstack/patchstack.php';
return $protected;
}
/**
* Intercept admin actions attempting to deactivate or delete protected plugins and block them.
*/
public function protect_plugins_admin_actions() {
// Collect requested action(s).
$action = isset( $_REQUEST['action'] ) ? sanitize_key( (string) $_REQUEST['action'] ) : '';
$action2 = isset( $_REQUEST['action2'] ) ? sanitize_key( (string) $_REQUEST['action2'] ) : '';
$targets = array();
if ( ! empty( $_REQUEST['plugin'] ) ) {
$targets[] = sanitize_text_field( (string) $_REQUEST['plugin'] );
}
if ( ! empty( $_REQUEST['checked'] ) && is_array( $_REQUEST['checked'] ) ) {
foreach ( $_REQUEST['checked'] as $pf ) {
$targets[] = sanitize_text_field( (string) $pf );
}
}
if ( empty( $targets ) ) {
return;
}
$blocked_actions = array(
'deactivate',
'deactivate-selected',
'delete',
'delete-selected',
'delete-plugin',
);
if ( ! in_array( $action, $blocked_actions, true ) && ! in_array( $action2, $blocked_actions, true ) ) {
return;
}
$protected = $this->get_protected_plugins();
$intersect = array_intersect( $targets, $protected );
if ( ! empty( $intersect ) ) {
wp_die(
__( 'For security, this action is blocked: 1984 Hosting Support cannot be deactivated or deleted. Patchstack cannot be deactivated or deleted while it is active.', 'hostingsupport1984' ),
403
);
}
}
}
$hosting_support_1984 = new HostingSupport1984();

86
icons/patchstack-logo.svg Normal file
View File

@@ -0,0 +1,86 @@
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="140 0 760 108"
width="760"
height="108"
preserveAspectRatio="xMidYMid meet">
<!-- Green rounded blocks on the left -->
<g transform="matrix(0.3399930000305176,0,0,0.34498801827430725,183.22999572753906,55.01251983642578)">
<g transform="matrix(1,0,0,1,-44.5,94.25)">
<path fill="rgb(110,190,0)"
d="M44.5,-31.75 C44.5,-31.75 44.5,31.75 44.5,31.75 C44.5,31.75 -44.5,31.75 -44.5,31.75 C-44.5,31.75 -44.5,-31.75 -44.5,-31.75 C-44.5,-31.75 44.5,-31.75 44.5,-31.75z"/>
</g>
</g>
<g transform="matrix(0.32833799719810486,0,0,0.3436559736728668,153.25999450683594,55.180362701416016)">
<g transform="matrix(1,0,0,1,-44.5,94.25)">
<path fill="rgb(175,230,20)"
d="M44.5,-31.75 C44.5,-31.75 44.5,31.75 44.5,31.75 C44.5,31.75 -44.5,31.75 -44.5,31.75 C-44.5,31.75 -44.5,-31.75 -44.5,-31.75 C-44.5,-31.75 44.5,-31.75 44.5,-31.75z"/>
</g>
</g>
<g transform="matrix(0.3399930000305176,0,0,0.3349980115890503,182.71420288085938,56.104427337646484)">
<g transform="matrix(1,0,0,1,89,-34)">
<path fill="rgb(175,230,20)"
d="M88,-96 C88,-96 88,96 88,96 C88,96 -88,96 -88,96 C-88,96 -88,-96 -88,-96 C-88,-96 88,-96 88,-96z"/>
</g>
</g>
<g transform="matrix(0.3316679894924164,0,0,0.3330000042915344,182.99288940429688,55.5369987487793)">
<g transform="matrix(1,0,0,1,-89,-65)">
<path fill="rgb(110,190,0)"
d="M89,-64 C89,-64 89,64 89,64 C89,64 -89,64 -89,64 C-89,64 -89,-64 -89,-64 C-89,-64 89,-64 89,-64z"/>
</g>
</g>
<!-- Text-like shapes -->
<g transform="matrix(1,0,0,1,313,82)">
<path fill="#000"
d="M2.061000108718872,-10.508000373840332 C-8.185999870300293,-10.508000373840332 -13.237000465393066,-14.91100025177002 -13.237000465393066,-24.417999267578125 C-13.237000465393066,-34.025001525878906 -8.185999870300293,-38.52799987792969 2.061000108718872,-38.52799987792969 C12.088000297546387,-38.52799987792969 17.715999603271484,-34.025001525878906 17.715999603271484,-24.417999267578125 C17.715999603271484,-14.91100025177002 12.088000297546387,-10.508000373840332 2.061000108718872,-10.508000373840332z M7.019999980926514,-50.0369987487793 C-2.3459999561309814,-50.0369987487793 -9.472000122070312,-46.13399887084961 -12.998000144958496,-38.22800064086914 C-12.998000144958496,-38.22800064086914 -12.998000144958496,-49.0359992980957 -12.998000144958496,-49.0359992980957 C-12.998000144958496,-49.0359992980957 -25.867000579833984,-49.0359992980957 -25.867000579833984,-49.0359992980957 C-25.867000579833984,-49.0359992980957 -26.367000579833984,-16 -26.367000579833984,-16 C-26.367000579833984,-16 -25.867000579833984,17.011999130249023 -25.867000579833984,17.011999130249023 C-25.867000579833984,17.011999130249023 -12.935999870300293,17.011999130249023 -12.935999870300293,17.011999130249023 C-12.935999870300293,17.011999130249023 -12.935999870300293,-10.508000373840332 -12.935999870300293,-10.508000373840332 C-9.40999984741211,-2.802000045776367 -2.677000045776367,1.0010000467300415 6.248000144958496,1.0010000467300415 C13.85099983215332,1.0010000467300415 19.91200065612793,-1.3009999990463257 24.319000244140625,-6.004000186920166 C28.615999221801758,-10.607000350952148 30.81999969482422,-16.711999893188477 30.81999969482422,-24.417999267578125 C30.81999969482422,-40.02899932861328 21.895000457763672,-50.0369987487793 7.019999980926514,-50.0369987487793z"/>
</g>
<g transform="matrix(1,0,0,1,382.5,82)">
<path fill="#000"
d="M-1.5750000476837158,-10.508000373840332 C-11.381999969482422,-10.508000373840332 -17.354999542236328,-15.111000061035156 -17.354999542236328,-24.417999267578125 C-17.354999542236328,-33.82500076293945 -11.381999969482422,-38.52799987792969 -1.5750000476837158,-38.52799987792969 C8.67199993133545,-38.52799987792969 13.847999572753906,-34.025001525878906 13.847999572753906,-24.417999267578125 C13.847999572753906,-14.91100025177002 8.67199993133545,-10.508000373840332 -1.5750000476837158,-10.508000373840332z M13.470000267028809,-38.02799987792969 C9.944000244140625,-46.034000396728516 2.943000078201294,-50.0369987487793 -6.422999858856201,-50.0369987487793 C-21.408000946044922,-50.0369987487793 -30.333999633789062,-40.02899932861328 -30.333999633789062,-24.417999267578125 C-30.333999633789062,-16.711999893188477 -28.128999710083008,-10.607000350952148 -23.722000122070312,-6.004000186920166 C-19.424999237060547,-1.3009999990463257 -13.364999771118164,1.0010000467300415 -5.76200008392334,1.0010000467300415 C3.2730000019073486,1.0010000467300415 10.053999900817871,-2.9019999504089355 13.470000267028809,-10.708000183105469 C13.470000267028809,-10.708000183105469 13.470000267028809,0 13.470000267028809,0 C13.470000267028809,0 26.58799934387207,0 26.58799934387207,0 C26.58799934387207,0 26.58799934387207,-49.0359992980957 26.58799934387207,-49.0359992980957 C26.58799934387207,-49.0359992980957 13.470000267028809,-49.0359992980957 13.470000267028809,-49.0359992980957 C13.470000267028809,-49.0359992980957 13.470000267028809,-38.02799987792969 13.470000267028809,-38.02799987792969z"/>
</g>
<g transform="matrix(1,0,0,1,439,82)">
<path fill="#000"
d="M19.81399917602539,-48.95199966430664 C19.81399917602539,-48.95199966430664 3.3329999446868896,-48.95199966430664 3.3329999446868896,-48.95199966430664 C3.3329999446868896,-48.95199966430664 3.3329999446868896,-63.78099822998047 3.3329999446868896,-63.78099822998047 C3.3329999446868896,-63.78099822998047 -9.53499984741211,-63.78099822998047 -9.53499984741211,-63.78099822998047 C-9.53499984741211,-63.78099822998047 -9.53499984741211,-48.95199966430664 -9.53499984741211,-48.95199966430664 C-9.53499984741211,-48.95199966430664 -20.7189998626709,-48.95199966430664 -20.7189998626709,-48.95199966430664 C-20.7189998626709,-48.95199966430664 -20.7189998626709,-37.28200149536133 -20.7189998626709,-37.28200149536133 C-20.7189998626709,-37.28200149536133 -9.53499984741211,-37.28200149536133 -9.53499984741211,-37.28200149536133 C-9.53499984741211,-37.28200149536133 -9.53499984741211,-15.243000030517578 -9.53499984741211,-15.243000030517578 C-9.53499984741211,-6.117000102996826 -3.4110000133514404,0 6.75,0 C6.75,0 18.474000930786133,0 18.474000930786133,0 C18.474000930786133,0 18.474000930786133,-11.232000350952148 18.474000930786133,-11.232000350952148 C18.474000930786133,-11.232000350952148 3.3329999446868896,-11.232000350952148 3.3329999446868896,-11.232000350952148 C3.3329999446868896,-11.232000350952148 3.3329999446868896,-37.28200149536133 3.3329999446868896,-37.28200149536133 C3.3329999446868896,-37.28200149536133 19.81399917602539,-37.28200149536133 19.81399917602539,-37.28200149536133 C19.81399917602539,-37.28200149536133 19.81399917602539,-48.95199966430664 19.81399917602539,-48.95199966430664z"/>
</g>
<g transform="matrix(1,0,0,1,493,82)">
<path fill="#000"
d="M0.9729999899864197,-10.508000373840332 C-9.1899995803833,-10.508000373840332 -15.121000289916992,-14.91100025177002 -15.121000289916992,-24.417999267578125 C-15.121000289916992,-34.025001525878906 -9.1899995803833,-38.52799987792969 0.9729999899864197,-38.52799987792969 C9.194999694824219,-38.52799987792969 14.213000297546387,-35.72600173950195 15.925999641418457,-27.6200008392334 C15.925999641418457,-27.6200008392334 28.950000762939453,-30.621999740600586 28.950000762939453,-30.621999740600586 C25.40999984741211,-43.53200149536133 15.131999969482422,-50.0369987487793 0.9729999899864197,-50.0369987487793 C-7.820000171661377,-50.0369987487793 -14.89900016784668,-47.73500061035156 -20.266000747680664,-43.03200149536133 C-25.746999740600586,-38.32899856567383 -28.488000869750977,-32.124000549316406 -28.488000869750977,-24.417999267578125 C-28.488000869750977,-16.812000274658203 -25.746999740600586,-10.706999778747559 -20.266000747680664,-6.004000186920166 C-14.89900016784668,-1.3009999990463257 -7.820000171661377,1.0010000467300415 0.9729999899864197,1.0010000467300415 C14.789999961853027,1.0010000467300415 25.29599952697754,-5.203999996185303 28.950000762939453,-18.413999557495117 C28.950000762939453,-18.413999557495117 15.925999641418457,-21.416000366210938 15.925999641418457,-21.416000366210938 C14.098999977111816,-13.3100004196167 9.079999923706055,-10.508000373840332 0.9729999899864197,-10.508000373840332z"/>
</g>
<g transform="matrix(1,0,0,1,557,82)">
<path fill="#000"
d="M6.936999797821045,-50.0369987487793 C-2.3310000896453857,-50.0369987487793 -8.562000274658203,-47.125 -11.71500015258789,-39.689998626708984 C-11.71500015258789,-39.689998626708984 -11.71500015258789,-70.0510025024414 -11.71500015258789,-70.0510025024414 C-11.71500015258789,-70.0510025024414 -24.770999908447266,-70.0510025024414 -24.770999908447266,-70.0510025024414 C-24.770999908447266,-70.0510025024414 -24.770999908447266,0 -24.770999908447266,0 C-24.770999908447266,0 -11.71500015258789,0 -11.71500015258789,0 C-11.71500015258789,0 -11.71500015258789,-23.41699981689453 -11.71500015258789,-23.41699981689453 C-11.71500015258789,-33.32400131225586 -6.35099983215332,-38.52799987792969 1.6890000104904175,-38.52799987792969 C8.723999977111816,-38.52799987792969 13.670999526977539,-35.22600173950195 13.670999526977539,-28.621000289916992 C13.670999526977539,-28.621000289916992 13.670999526977539,0 13.670999526977539,0 C13.670999526977539,0 26.726999282836914,0 26.726999282836914,0 C26.726999282836914,0 26.726999282836914,-29.32200050354004 26.726999282836914,-29.32200050354004 C26.726999282836914,-43.13199996948242 20.000999450683594,-50.0369987487793 6.936999797821045,-50.0369987487793z"/>
</g>
<g transform="matrix(1,0,0,1,616.5,82)">
<path fill="#000"
d="M-0.03200000151991844,1.0010000467300415 C15.041999816894531,1.0010000467300415 23.975000381469727,-5.004000186920166 23.975000381469727,-15.111000061035156 C23.975000381469727,-23.017000198364258 18.614999771118164,-28.020000457763672 9.347000122070312,-29.121000289916992 C9.347000122070312,-29.121000289916992 -1.819000005722046,-30.621999740600586 -1.819000005722046,-30.621999740600586 C-6.843999862670898,-31.322999954223633 -8.630000114440918,-32.82400131225586 -8.630000114440918,-35.72600173950195 C-8.630000114440918,-39.12799835205078 -5.949999809265137,-40.83000183105469 -0.5899999737739563,-40.83000183105469 C6.556000232696533,-40.83000183105469 9.01200008392334,-39.12799835205078 9.793999671936035,-33.124000549316406 C9.793999671936035,-33.124000549316406 22.299999237060547,-35.82600021362305 22.299999237060547,-35.82600021362305 C20.402000427246094,-45.33300018310547 12.586000442504883,-50.0369987487793 -1.0369999408721924,-50.0369987487793 C-14.770999908447266,-50.0369987487793 -22.29800033569336,-44.43299865722656 -22.29800033569336,-35.125999450683594 C-22.29800033569336,-26.81999969482422 -17.22800064086914,-21.916000366210938 -7.4019999504089355,-20.415000915527344 C-7.4019999504089355,-20.415000915527344 1.7549999952316284,-19.11400032043457 1.7549999952316284,-19.11400032043457 C8.008000373840332,-18.21299934387207 11.043999671936035,-16.812000274658203 11.043999671936035,-13.710000038146973 C11.043999671936035,-10.407999992370605 6.7789998054504395,-8.706000328063965 0.8610000014305115,-8.706000328063965 C-6.396999835968018,-8.706000328063965 -9.859000205993652,-10.708000183105469 -10.751999855041504,-16.812000274658203 C-10.751999855041504,-16.812000274658203 -23.726999282836914,-13.510000228881836 -23.726999282836914,-13.510000228881836 C-22.274999618530273,-5.104000091552734 -13.543000221252441,1.0010000467300415 -0.03200000151991844,1.0010000467300415z"/>
</g>
<g transform="matrix(1,0,0,1,666.5,82)">
<path fill="#000"
d="M19.81399917602539,-48.95199966430664 C19.81399917602539,-48.95199966430664 3.3329999446868896,-48.95199966430664 3.3329999446868896,-48.95199966430664 C3.3329999446868896,-48.95199966430664 3.3329999446868896,-63.78099822998047 3.3329999446868896,-63.78099822998047 C3.3329999446868896,-63.78099822998047 -9.53499984741211,-63.78099822998047 -9.53499984741211,-63.78099822998047 C-9.53499984741211,-63.78099822998047 -9.53499984741211,-48.95199966430664 -9.53499984741211,-48.95199966430664 C-9.53499984741211,-48.95199966430664 -20.7189998626709,-48.95199966430664 -20.7189998626709,-48.95199966430664 C-20.7189998626709,-48.95199966430664 -20.7189998626709,-37.28200149536133 -20.7189998626709,-37.28200149536133 C-20.7189998626709,-37.28200149536133 -9.53499984741211,-37.28200149536133 -9.53499984741211,-37.28200149536133 C-9.53499984741211,-37.28200149536133 -9.53499984741211,-15.243000030517578 -9.53499984741211,-15.243000030517578 C-9.53499984741211,-6.117000102996826 -3.4110000133514404,0 6.75,0 C6.75,0 18.474000930786133,0 18.474000930786133,0 C18.474000930786133,0 18.474000930786133,-11.232000350952148 18.474000930786133,-11.232000350952148 C18.474000930786133,-11.232000350952148 3.3329999446868896,-11.232000350952148 3.3329999446868896,-11.232000350952148 C3.3329999446868896,-11.232000350952148 3.3329999446868896,-37.28200149536133 3.3329999446868896,-37.28200149536133 C3.3329999446868896,-37.28200149536133 19.81399917602539,-37.28200149536133 19.81399917602539,-37.28200149536133 C19.81399917602539,-37.28200149536133 19.81399917602539,-48.95199966430664 19.81399917602539,-48.95199966430664z"/>
</g>
<g transform="matrix(1,0,0,1,723,82)">
<path fill="#000"
d="M-1.5750000476837158,-10.508000373840332 C-11.381999969482422,-10.508000373840332 -17.354999542236328,-15.111000061035156 -17.354999542236328,-24.417999267578125 C-17.354999542236328,-33.82500076293945 -11.381999969482422,-38.52799987792969 -1.5750000476837158,-38.52799987792969 C8.67199993133545,-38.52799987792969 13.847999572753906,-34.025001525878906 13.847999572753906,-24.417999267578125 C13.847999572753906,-14.91100025177002 8.67199993133545,-10.508000373840332 -1.5750000476837158,-10.508000373840332z M13.470000267028809,-38.02799987792969 C9.944000244140625,-46.034000396728516 2.943000078201294,-50.0369987487793 -6.422999858856201,-50.0369987487793 C-21.408000946044922,-50.0369987487793 -30.333999633789062,-40.02899932861328 -30.333999633789062,-24.417999267578125 C-30.333999633789062,-16.711999893188477 -28.128999710083008,-10.607000350952148 -23.722000122070312,-6.004000186920166 C-19.424999237060547,-1.3009999990463257 -13.364999771118164,1.0010000467300415 -5.76200008392334,1.0010000467300415 C3.2730000019073486,1.0010000467300415 10.053999900817871,-2.9019999504089355 13.470000267028809,-10.708000183105469 C13.470000267028809,-10.708000183105469 13.470000267028809,0 13.470000267028809,0 C13.470000267028809,0 26.58799934387207,0 26.58799934387207,0 C26.58799934387207,0 26.58799934387207,-49.0359992980957 26.58799934387207,-49.0359992980957 C26.58799934387207,-49.0359992980957 13.470000267028809,-49.0359992980957 13.470000267028809,-49.0359992980957 C13.470000267028809,-49.0359992980957 13.470000267028809,-38.02799987792969 13.470000267028809,-38.02799987792969z"/>
</g>
<g transform="matrix(1,0,0,1,788.25,82)">
<path fill="#000"
d="M0.9729999899864197,-10.508000373840332 C-9.1899995803833,-10.508000373840332 -15.121000289916992,-14.91100025177002 -15.121000289916992,-24.417999267578125 C-15.121000289916992,-34.025001525878906 -9.1899995803833,-38.52799987792969 0.9729999899864197,-38.52799987792969 C9.194999694824219,-38.52799987792969 14.213000297546387,-35.72600173950195 15.925999641418457,-27.6200008392334 C15.925999641418457,-27.6200008392334 28.950000762939453,-30.621999740600586 28.950000762939453,-30.621999740600586 C25.40999984741211,-43.53200149536133 15.131999969482422,-50.0369987487793 0.9729999899864197,-50.0369987487793 C-7.820000171661377,-50.0369987487793 -14.89900016784668,-47.73500061035156 -20.266000747680664,-43.03200149536133 C-25.746999740600586,-38.32899856567383 -28.488000869750977,-32.124000549316406 -28.488000869750977,-24.417999267578125 C-28.488000869750977,-16.812000274658203 -25.746999740600586,-10.706999778747559 -20.266000747680664,-6.004000186920166 C-14.89900016784668,-1.3009999990463257 -7.820000171661377,1.0010000467300415 0.9729999899864197,1.0010000467300415 C14.789999961853027,1.0010000467300415 25.29599952697754,-5.203999996185303 28.950000762939453,-18.413999557495117 C28.950000762939453,-18.413999557495117 15.925999641418457,-21.416000366210938 15.925999641418457,-21.416000366210938 C14.098999977111816,-13.3100004196167 9.079999923706055,-10.508000373840332 0.9729999899864197,-10.508000373840332z"/>
</g>
<g transform="matrix(1,0,0,1,850,82)">
<path fill="#000"
d="M30.777000427246094,0 C30.777000427246094,0 8.23799991607666,-28.42099952697754 8.23799991607666,-28.42099952697754 C8.23799991607666,-28.42099952697754 30.090999603271484,-49.0359992980957 30.090999603271484,-49.0359992980957 C30.090999603271484,-49.0359992980957 12.998000144958496,-49.0359992980957 12.998000144958496,-49.0359992980957 C12.998000144958496,-49.0359992980957 -9.99899959564209,-26.503999710083008 -9.99899959564209,-26.503999710083008 C-9.99899959564209,-26.503999710083008 -9.875,-69.8010025024414 -9.875,-69.8010025024414 C-9.875,-69.8010025024414 -22.50200080871582,-69.8010025024414 -22.50200080871582,-69.8010025024414 C-22.50200080871582,-69.8010025024414 -22.50200080871582,0 -22.50200080871582,0 C-22.50200080871582,0 -9.875,0 -9.875,0 C-9.875,0 -9.875,-11.517000198364258 -9.875,-11.517000198364258 C-9.875,-11.517000198364258 0.5920000076293945,-20.827999114990234 0.5920000076293945,-20.827999114990234 C0.5920000076293945,-20.827999114990234 15.170000076293945,0 15.170000076293945,0 C15.170000076293945,0 30.777000427246094,0 30.777000427246094,0z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -6,14 +6,12 @@
function HostingSupport1984CopyEmailAddress(e) {
e.preventDefault();
var emailAddressTag = document.querySelector( '#hosting-support-1984-address' );
emailAddressTag.select();
document.execCommand( 'copy' );
const emailAddressTag = document.querySelector('#hosting-support-1984-address');
navigator.clipboard.writeText(emailAddressTag.value)
.catch(err => console.error("Clipboard write failed:", err));
}
if (document.querySelector( '#hosting-support-1984-link' )) {
document.querySelector( '#hosting-support-1984-link' ).addEventListener(
'click',
HostingSupport1984CopyEmailAddress
);
const hostingSupport1984Link = document.querySelector('#hosting-support-1984-link');
if (hostingSupport1984Link) {
hostingSupport1984Link.addEventListener('click', HostingSupport1984CopyEmailAddress);
}

View File

@@ -1,41 +1,77 @@
# Copyright (C) 2025 1984 ehf.
# This file is distributed under the same license as the 1984 Hosting Support plugin.
msgid ""
msgstr ""
"Project-Id-Version: 1984 Big Brother\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-19 10:05+0000\n"
"PO-Revision-Date: 2021-01-19 10:09+0000\n"
"Last-Translator: \n"
"Language-Team: Íslenska\n"
"Language: is_IS\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"Project-Id-Version: 1984 Hosting Support 1.2.0\n"
"Report-Msgid-Bugs-To: https://git.1984.is/1984/1984-hosting-support"
"support\n"
"POT-Creation-Date: 2025-12-02T11:33:54+00:00\n"
"PO-Revision-Date: 2025-12-02T11:00:44+00:00\n"
"Last-Translator: Sævar Bergur Sigurgeirsson <saevar@1984.is>\n"
"Language-Team: none\n"
"Language: is\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco https://localise.biz/\n"
"X-Loco-Version: 2.4.2; wp-5.6"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: hostingsupport1984\n"
#: 1984-hosting-support-ui.php:100
#. Plugin Name of the plugin
#: 1984-hosting-support.php 1984-hosting-support-ui.php:49
msgid "1984 Hosting Support"
msgstr "Aðstoð og stuðningur hjá 1984"
#. Name of the plugin
msgid "1984-hosting-support.php"
#. Description of the plugin
#: 1984-hosting-support.php
msgid "Support plugin for 1984 Hosting customers."
msgstr "Stuðningsviðbót fyrir viðskiptavini 1984."
#. Author of the plugin
#: 1984-hosting-support.php
msgid "1984 ehf."
msgstr ""
#: views/support-dashboard-widget.php:31
#. Author URI of the plugin
#: 1984-hosting-support.php
msgid "https://1984.hosting"
msgstr ""
#: 1984-hosting-support.php:197
msgid ""
"1984 Hosting: Please do not deactivate or delete this plugin - part of your "
"WordPress Security Pack."
msgstr ""
"1984 Hosting: Vinsamlegast ekki slökkva á eða eyða þessari viðbót - hún er "
"hluti af WordPress öryggispakkanum þínum."
#: 1984-hosting-support.php:202
msgid "Visit 1984 Hosting Homepage"
msgstr "Heimsækja vefsíðu 1984 Hosting"
#: 1984-hosting-support.php:203
msgid "Visit Patchstack Homepage"
msgstr "Heimsækja vefsíðu Patchstack"
#: 1984-hosting-support.php:322
msgid ""
"For security, this action is blocked: 1984 Hosting Support and Patchstack "
"cannot be deactivated or deleted while this policy is active."
msgstr ""
"Af öryggisástæðum er þessari aðgerð hafnað: 1984 Hosting Support og "
"Patchstack er ekki hægt að slökkva á eða eyða meðan þessi regla er virk."
#: views/support-dashboard-widget.php:21
msgid "My Profile"
msgstr "Minn aðgangur"
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:34
msgid "My Sites, Domains & VPSs"
msgstr "Vefir, lén og sýndarvélar"
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:48
msgid "Knowledge Base"
msgstr "Viskubrunnur 1984"
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:62
msgid "Contact Support"
msgstr "Fá aðstoð"

View File

@@ -1,41 +1,68 @@
# Copyright (C) 2025 1984 ehf.
# This file is distributed under the same license as the 1984 Hosting Support plugin.
msgid ""
msgstr ""
"Project-Id-Version: 1984 Big Brother\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-19 10:05+0000\n"
"PO-Revision-Date: 2021-01-19 10:09+0000\n"
"Last-Translator: \n"
"Language-Team: Íslenska\n"
"Language: is_IS\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"Project-Id-Version: 1984 Hosting Support 1.2.0\n"
"Report-Msgid-Bugs-To: https://git.1984.is/1984/1984-hosting-support\n"
"Last-Translator: Sævar Bergur Sigurgeirsson <saevar@1984.is>\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco https://localise.biz/\n"
"X-Loco-Version: 2.4.2; wp-5.6"
"POT-Creation-Date: 2025-12-02T11:33:54+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: hostingsupport1984\n"
#: 1984-hosting-support-ui.php:100
#. Plugin Name of the plugin
#: 1984-hosting-support.php
#: 1984-hosting-support-ui.php:49
msgid "1984 Hosting Support"
msgstr "Aðstoð og stuðningur hjá 1984"
#. Name of the plugin
msgid "1984-hosting-support.php"
msgstr ""
#: views/support-dashboard-widget.php:31
#. Description of the plugin
#: 1984-hosting-support.php
msgid "Support plugin for 1984 Hosting customers."
msgstr ""
#. Author of the plugin
#: 1984-hosting-support.php
msgid "1984 ehf."
msgstr ""
#. Author URI of the plugin
#: 1984-hosting-support.php
msgid "https://1984.hosting"
msgstr ""
#: 1984-hosting-support.php:197
msgid "1984 Hosting: Please do not deactivate or delete this plugin - part of your WordPress Security Pack."
msgstr ""
#: 1984-hosting-support.php:202
msgid "Visit 1984 Hosting Homepage"
msgstr ""
#: 1984-hosting-support.php:203
msgid "Visit Patchstack Homepage"
msgstr ""
#: 1984-hosting-support.php:322
msgid "For security, this action is blocked: 1984 Hosting Support and Patchstack cannot be deactivated or deleted while this policy is active."
msgstr ""
#: views/support-dashboard-widget.php:21
msgid "My Profile"
msgstr ""
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:34
msgid "My Sites, Domains & VPSs"
msgstr ""
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:48
msgid "Knowledge Base"
msgstr ""
#: views/support-dashboard-widget.php:15
#: views/support-dashboard-widget.php:62
msgid "Contact Support"
msgstr ""

View File

@@ -7,23 +7,6 @@
* https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
**/
#hostingsupport1984_support_widget {
background: #fffbee;
}
#adminmenu a.toplevel_page_hostingsupport1984_manage {
background-color: #b48701;
font-weight: bold;
}
#adminmenu a.toplevel_page_hostingsupport1984_manage:hover {
color: #fff;
}
#adminmenu a.toplevel_page_hostingsupport1984_manage div.wp-menu-image::before {
color: #fff;
}
#hosting-support-1984-main-links {
display: grid;
grid-template-columns: repeat(2, 1fr);
@@ -54,4 +37,3 @@
width: auto;
height: 1.5em;
}