{"id":33449,"date":"2014-12-16T23:37:38","date_gmt":"2014-12-16T23:37:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/alertwire\/"},"modified":"2017-01-05T23:44:08","modified_gmt":"2017-01-05T23:44:08","slug":"alertwire","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/alertwire\/","author":14189253,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.2","stable_tag":"trunk","tested":"4.7.33","requires":"3.0","requires_php":"","requires_plugins":"","header_name":"AlertWire","header_author":"AlertWire","header_description":"","assets_banners_color":"","last_updated":"2017-01-05 23:44:08","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.alertwire.com","header_plugin_uri":"https:\/\/www.alertwire.com\/plugin\/WordPress\/AlertWire.zip","header_author_uri":"https:\/\/www.alertwire.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":2122,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.2":"<p>Nothing to do, but you might want to explicitly point at https: for the .js file to save a redirection.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.1.1","1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":"1046376","resolution":"1","location":"assets","width":928,"height":739},"screenshot-2.png":{"filename":"screenshot-2.png","revision":"1046376","resolution":"2","location":"assets","width":1464,"height":25}},"screenshots":{"1":"The plug-in settings screen, where you enter the <code>data-token<\/code> and select into what pages the script is injected.","2":"The script that is injected at the bottom of the page."}},"plugin_section":[],"plugin_tags":[2566,2512,1334,1159,6176],"plugin_category":[41],"plugin_contributors":[130257],"plugin_business_model":[],"class_list":["post-33449","plugin","type-plugin","status-publish","hentry","plugin_tags-alert","plugin_tags-messaging","plugin_tags-notice","plugin_tags-notification","plugin_tags-recall","plugin_category-communication","plugin_contributors-alertwire","plugin_committers-alertwire"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/alertwire.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/alertwire\/assets\/screenshot-1.png?rev=1046376","caption":"The plug-in settings screen, where you enter the <code>data-token<\/code> and select into what pages the script is injected."},{"src":"https:\/\/ps.w.org\/alertwire\/assets\/screenshot-2.png?rev=1046376","caption":"The script that is injected at the bottom of the page."}],"raw_content":"<!--section=description-->\n<p><strong>AlertWire<\/strong> is a system for centralized administration of alert\/messaging for multiple sites.<\/p>\n\n<p>Once your site has been configured in the AlertWire system, you can add this plug-in and set the data-token to enabled the checking of alerts.  When the \npage is rendered, a <code>&lt;script&gt;<\/code> tag will be inserted into the document being rendered.<\/p>\n\n<p><em>How AlertWire Works<\/em><\/p>\n\n<ol>\n<li>The page is generated with the correct API server and <code>data-token<\/code> configured, typically added to the bottom of the page <code>body<\/code> tag.<\/li>\n<li>An async script tag is executed (late as possible) which loads a small (&lt;4K) javascript plug-in. This plug-in has no dependancies and will\nnot interfere with any existing frameworks like jQuery<\/li>\n<li>A cross-domain JSON request is made to the AlertWire API service to determine if there are any active alerts for the <code>data-token<\/code> specified.<\/li>\n<li>If there are one or more alerts to view, a CSS style-sheet will also be loaded from the API server.<\/li>\n<li>The alerts are then generated dynamically into the document and styled automatically. There are several formats that are rendered\ndifferently (e.g. page-top, lightbox, etc.).<\/li>\n<li>Tracking pixels are generated to record when a check-in for alerts cccurs and when a view or close or click-through of an alert occurs.<\/li>\n<\/ol>\n\n<p><em>Notes<\/em><\/p>\n\n<ul>\n<li>The javascript plug-in and CSS style-sheet are publically cached from a CDN and are very small, the impact on load times should be tiny.<\/li>\n<li>The CSS file is only loaded if there are alerts to be rendered.<\/li>\n<li>The javascript plug-in only introduces one symbol into the global scope, the <em>AlertWire<\/em> module. All other functionality is behind that scope.<\/li>\n<li>The plug-in will set a cookie when a user closes an alert to ensure it isn't displayed again. Depending on the alert type, this cookie may be a \nsession cookie or a durable cookie with a 1 year expiration.<\/li>\n<li>A very small font file will be downloaded for the alert icons the first time an alert is displayed to an end user.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log into your WordPress admin<\/li>\n<li>Click 'Plugins'<\/li>\n<li>Click 'Add New'<\/li>\n<li>Search for <em>AlertWire<\/em><\/li>\n<li>Click 'Install Now' under <em>AlertWire<\/em><\/li>\n<li>Activate the plugin through the <em>Plugins<\/em> menu in WordPress.<\/li>\n<li>Navigate to the <em>Settings\/AlertWire<\/em> page<\/li>\n<li>Enter the <code>data-token<\/code> value provided on the site-setup page from the <em>AlertWire<\/em> system.<\/li>\n<li>Optionally enter the ID (or other valid CSS selector) for the container element alerts should be inserted into.<\/li>\n<li>Select if alerts should be shown on the Home\/Front Page and\/or the Single Post pages.<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download from <a href=\"https:\/\/www.alertwire.com\/plugin\/WordPress\/AlertWire.zip\">here<\/a> and unzip the plugin.<\/li>\n<li>Upload the entire <em>AlertWire<\/em> directory to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <em>Plugins<\/em> menu in WordPress.<\/li>\n<li>Navigate to the <em>Settings\/AlertWire<\/em> page<\/li>\n<li>Enter the <code>data-token<\/code> value provided on the site-setup page from the <em>AlertWire<\/em> system.<\/li>\n<li>Optionally enter the ID (or other valid CSS selector) for the container element alerts should be inserted into.<\/li>\n<li>Select if alerts should be shown on the Home\/Front Page and\/or the Single Post pages.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt>Will this slow down my pages?<\/dt>\n<dd><ul>\n<li><p>The javascript plug-in is very small, is loaded from a global CDN (content delivery network) and is publically cacheable for years. Once a \nend-user has visited your site it will be in their cache.<\/p><\/li>\n<li><p>The javascript snippet does a very fast JSON call that is publically cachable for 5 minutes (default), so even if your site is very heavily loaded it will be \navailable long before any images are finished loading.<\/p><\/li>\n<li><p>The CSS file is only loaded <em>if<\/em> there are alerts to be rendered (not normally the case) and is also served from a CDN as a public long-cacheable file. \nThis CSS file is under 2K and will only be downloaded one per end-user.<\/p><\/li>\n<li><p>The font file for the alert icons is downloaded only if there are alerts to be rendered and is also served from a CDN as a public long-cacheable file.\nThis font file is under 10K and will only be downloaded once per end-user.<\/p><\/li>\n<li><p>The actual script execution is very fast and will not block on any downloads.<\/p><\/li>\n<\/ul><\/dd>\n<dt>Will this break my pages?<\/dt>\n<dd><ul>\n<li><p>All alerts are injected into the page in a <code>div<\/code> tag and the CSS generated is scoped via a nonce-based id. It should never interact with any styling on your page\nbut you might need to provide a placement anchor-element to ensure your site CSS doesn't hide the alert. The script snippet allows you to specify a container <code>div<\/code> \nto act as the parent for the injected alerts in case you need to adjust them around header or navigation elements.<\/p><\/li>\n<li><p>The alerts are deleted from the page DOM when closed so nothing remains on screen if the end-user closes the alert. The lightbox-style alert acts as a complete \npage take-over and thus might have z-index issues, by default the alerts will be z-index of at least 10000.<\/p><\/li>\n<li><p>If the javascript snippet has an error, nothing will be displayed so nothing will need to be hidden.<\/p><\/li>\n<\/ul><\/dd>\n<dt>What about updates?<\/dt>\n<dd><p>Since the <em>AlertWire<\/em> javascript client-side plug-in is long-cached, it has built-in ability to update itself to a new version. This is triggered by a \nversion-requirement declared in the JSON response and is completely automatic.<\/p><\/dd>\n<dt>How much does this cost?<\/dt>\n<dd><p>The plug-in is free and use is included in the cost of an <em>AlertWire<\/em> system. For <a href=\"https:\/\/www.alertwire.com\">more information about AlertWire<\/a>.<\/p><\/dd>\n<dt>What if I stop using AlertWire?<\/dt>\n<dd><p>Since the script does essentially nothing if there are no alerts configured for the site, your script will just silently keep working and display nothing.<\/p><\/dd>\n<dt>Is this secure?<\/dt>\n<dd><ul>\n<li>Yes, everything is <em>only<\/em> loaded over HTTPS with OSCP stapling, Strict Transport Security (HSTS) required and preloaded in all browsers.<\/li>\n<li>No admin defined assets other than <em>pure text<\/em> are ever served to the end-user's browser.<\/li>\n<li>No CSS, JS, HTML or image assets are available for hacking\/injecting.<\/li>\n<li>All <em>AlertWire<\/em>-supplied content is served via the <a href=\"https:\/\/www.cloudflare.com\">CloudFlare CDN<\/a> with\nQualsys SSL Labs <a href=\"https:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=alertwire.com\">A+ SSL rating<\/a>.<\/li>\n<li>The administration application is fully tested against the OWASP best-practice criteria.<\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<p>Resaved all files in UTF8 <em>without<\/em> BOM so we don't bust headers<\/p>\n\n<h4>1.2.1<\/h4>\n\n<p>Removed unneeded markup in setting page.<\/p>\n\n<h4>1.2<\/h4>\n\n<p>Change default endpoint to https and note version compatibility to 4.7 and update notes.<\/p>\n\n<h4>1.1.1<\/h4>\n\n<p>Bump revision in the plug-in itself.<\/p>\n\n<h4>1.1<\/h4>\n\n<p>Cleanup now that we're in the WordPress plug-in repo.<\/p>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"AlertWire plug-in to easily insert script tag for AlertWire client sites.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/33449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=33449"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alertwire"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=33449"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=33449"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=33449"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=33449"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=33449"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=33449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}