1AppRegistry.registerBundle({applicationId:'nibe.seo_dashboard|1.3.4',bundle: {}}); 2AppRegistry.registerModule({applicationId:'nibe.seo_dashboard|1.3.4',path:'/component/Entries',module:function(define){'use strict';define(function (require) { 3 'use strict'; 4 5 var _ = require('underscore'); 6 var ListComponent = require('ListComponent'); 7 8 return ListComponent.extend({ 9 10 childProperty: 'entry', 11 12 childComponentPath: 'Entry', 13 14 filterState: function (state) { 15 return _.extend({}, { entry: state.data }); 16 } 17 }); 18});}}); 19AppRegistry.registerModule({applicationId:'nibe.seo_dashboard|1.3.4',path:'/template/main',module:function(define){define(function(require){var _=require('underscore');return function(obj){ 20var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');}; 21with(obj||{}){ 22__p+=''+ 23((__t=( renderer.renderComponent('Entries') ))==null?'':__t)+ 24'\r\n'; 25} 26return __p; 27};});}}); 28AppRegistry.registerModule({applicationId:'nibe.seo_dashboard|1.3.4',path:'/template/entry',module:function(define){define(function(require){var _=require('underscore');return function(obj){ 29var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');}; 30with(obj||{}){ 31__p+='<div class="nb-seo-audit">\r\n\r\n <div class="nb-seo-audit-header">\r\n <div class="nb-seo-audit-url"><a href="'+ 32((__t=( editUri ))==null?'':__t)+ 33'" class="nb-seo-audit-url-link">'+ 34((__t=( url ))==null?'':__t)+ 35'</a></div>\r\n\r\n <div class="nb-seo-audit-checks">\r\n\r\n <a href="#title-element" class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 36((__t=( checkTitle(seo.title, seo.siteTitle).class ))==null?'':__t)+ 37'"></span>\r\n <span class="nb-seo-audit-check-title">Title Element</span>\r\n </a>\r\n\r\n <a href="#meta-description" class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 38((__t=( checkMetaDescription(seo.metaDescription).class ))==null?'':__t)+ 39'"></span>\r\n <span class="nb-seo-audit-check-title">Meta description</span>\r\n </a>\r\n <!--\r\n <a href="#h1-heading" class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 40((__t=( checkH1(seo.h1).class ))==null?'':__t)+ 41' "></span>\r\n <span class="nb-seo-audit-check-title">H1 heading</span>\r\n </a>\r\n -->\r\n <a href="#optimized-images" class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 42((__t=( checkImages(seo.images).class ))==null?'':__t)+ 43'"></span>\r\n <span class="nb-seo-audit-check-title">Optimized images</span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class="nb-seo-audit-items">\r\n\r\n <div id="title-element" class="nb-seo-audit-item">\r\n <div class="nb-seo-audit-item-content">\r\n <div class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 44((__t=( checkTitle(seo.title, seo.siteTitle).class ))==null?'':__t)+ 45'"></span>\r\n <span class="nb-seo-audit-check-title">Title Element</span>\r\n </div>\r\n <div class="nb-seo-audit-item-title">'+ 46((__t=( checkTitle(seo.title, seo.siteTitle).msg ))==null?'':__t)+ 47'</div>\r\n <div class="nb-seo-audit-item-description">\r\n '; 48 if (seo.title.trim()) { 49__p+='\r\n '; 50 var customTitle = seo.title + ' - ' + seo.siteTitle 51__p+='\r\n <b>Current custom title:</b>\r\n '+ 52((__t=( '"' + customTitle + '" ( ' + customTitle.length + ' characters )' ))==null?'':__t)+ 53'\r\n <br>\r\n '; 54 } 55__p+='\r\n <p><b>Title:</b> Title tags are the second most important on-page ranking factor, after content.\r\n Title tags are a major factor in helping search engines understand what your page is about,\r\n and they are the first impression many people have of your page.</p>\r\n\r\n <p>Unique titles also help search engines understand that your content is unique and valuable,\r\n and also drive higher click-through rates.\r\n A good title can be the make-or-break factor in determining whether or not\r\n someone clicks on your link in the Search Engine Results Pages (SERPs).</p>\r\n\r\n <p><b>Optimal title length:</b> If your title is too long, search engines may cut it off by adding\r\n an ellipsis ("...").\r\n There is no exact character limit but Google typically displays the first 50â60 characters of a\r\n title tag.\r\n The exact limit is a bit more complicated and is based on a 600-pixel container.</p>\r\n\r\n <p><b>Keywords in the title:</b> You should absolutely put the primary keyword for the page in the\r\n beginning of the title\r\n but avoid titles that are just a list of keywords or repeat variations of the same keyword over\r\n and over.</p>\r\n\r\n <p><b>How to set a unique page title in Sitevision:</b> Mark the page --> Properties -->\r\n Settings --> Page Title</p>\r\n\r\n <button onclick="window.open(\''+ 56((__t=( editUri ))==null?'':__t)+ 57'/properties/webResourceSettings\', \'_top\')" class="nb-seo-audit-edit-btn">Edit custom title</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id="meta-description" class="nb-seo-audit-item">\r\n <div class="nb-seo-audit-item-content">\r\n <div class="nb-seo-audit-check">
57\r\n <span class="nb-seo-audit-check-icon '+ 58((__t=( checkMetaDescription(seo.metaDescription).class ))==null?'':__t)+ 59'"></span>\r\n <span class="nb-seo-audit-check-title">Meta description</span>\r\n </div>\r\n <div class="nb-seo-audit-item-title">'+ 60((__t=( checkMetaDescription(seo.metaDescription).msg ))==null?'':__t)+ 61'</div>\r\n <div class="nb-seo-audit-item-description">\r\n '; 62 if (seo.metaDescription.trim()) { 63__p+='\r\n <b>Current meta description:</b>\r\n '+ 64((__t=( '"' + seo.metaDescription + '" ( ' + seo.metaDescription.length + ' characters )' ))==null?'':__t)+ 65'\r\n <br>\r\n '; 66 } 67__p+='\r\n <p><b>Meta description:</b> Meta description is an HTML attribute that provides a brief summary of a\r\n web page.\r\n Search engines often display the meta description in search results and are extremely\r\n important to improve user click-through rates (CTR).</p>\r\n\r\n <p>The meta description should in a natural and non-spammy way contain the keyword(s) the page is\r\n targeting.\r\n It should be directly relevant to the page it describes, and unique from the descriptions for\r\n other pages.</p>\r\n\r\n <p><b>Meta descriptions should:</b>\r\n <ul>\r\n <li>be unique</li>\r\n <li>contain the most important keyword for the page</li>\r\n <li>be between 50-155 characters long</li>\r\n </ul>\r\n </p>\r\n\r\n <p><b>Try to:</b>\r\n <ul>\r\n <li>convince the user that we have the solution to their problem</li>\r\n <li>tell the user that we have the answer to their search intent</li>\r\n </ul>\r\n </p>\r\n\r\n <p><b>How to set a unique Meta description in Sitevision:</b> Mark the page --> Properties -->\r\n Metadata --> Description</p>\r\n \r\n <button onclick="window.open(\''+ 68((__t=( editUri ))==null?'':__t)+ 69'/properties/metadata\', \'_top\')" class="nb-seo-audit-edit-btn">Edit description</button> \r\n </div>\r\n </div>\r\n </div>\r\n <!--\r\n <div id="h1-heading" class="nb-seo-audit-item">\r\n <div class="nb-seo-audit-item-content">\r\n <div class="nb-seo-audit-check">\r\n <span class="nb-seo-audit-check-icon '+ 70((__t=( checkH1(seo.h1).class ))==null?'':__t)+ 71'"></span>\r\n <span class="nb-seo-audit-check-title">H1 heading</span>\r\n </div>\r\n <div class="nb-seo-audit-item-title">'+ 72((__t=( checkH1(seo.h1).msg ))==null?'':__t)+ 73'</div>\r\n <div class="nb-seo-audit-item-description">\r\n '; 74 if (seo.h1 > 1 || seo.h1 < 1) { 75__p+='\r\n <b>Current amount of H1 headings on page:</b> '+ 76((__t=( seo.h1 ))==null?'':__t)+ 77'\r\n <br>\r\n '; 78 } 79__p+='\r\n <p><b>Headings: </b>Headings (H1-H6) are used to show important text where the H1 is the most important.\r\n <ul>\r\n <li>An H1 should only be used once per page and should contain the most important keyword/phrase for the page.</li>\r\n <li>H2 and H3 and so on are used as sub-headings on the page and may contain variants of the keyword or search phrase. \r\n May occur more often on a page but avoid nestled headings.</li>\r\n </ul>\r\n </p>\r\n <p>The keyword(s) for the page should appear naturally in the text under the headings.</p>\r\n </div>\r\n </div>\r\n </div>\r\n -->\r\n <div id="optimized-images" class="nb-seo-audit-item">\r\n <div class="nb-seo-audit-item-content">\r\n <div class="nb-seo-audit-check"><span\r\n class="nb-seo-audit-check-icon '+ 80((__t=( checkImages(seo.images).class ))==null?'':__t)+ 81'"></span><span\r\n class="nb-seo-audit-check-title">Optimized images</span></div>\r\n <div class="nb-seo-audit-item-title">'+ 82((__t=( checkImages(seo.images).msg ))==null?'':__t)+
83'</div>\r\n <div class="nb-seo-audit-item-description">\r\n '; 84 if(!checkImages(seo.images).passed) { 85__p+='\r\n <div class="nb-seo-audit-table">\r\n <div class="nb-seo-audit-table-row">\r\n <div class="nb-seo-audit-table-col">File</div>\r\n <div class="nb-seo-audit-table-col">Size</div>\r\n </div>\r\n '; 86 for(var i = 0; i < seo.images.length; i++) { 87__p+='\r\n <div class="nb-seo-audit-table-row">\r\n <div class="nb-seo-audit-table-col">\r\n <a onclick="window.open(\''+ 88((__t=( seo.images[i].editUri ))==null?'':__t)+ 89'\', \'_blank\')">'+ 90((__t=( seo.images[i].fileName ))==null?'':__t)+ 91'</a>\r\n </div>\r\n <div class="nb-seo-audit-table-col">'+ 92((__t=( seo.images[i].humanByte ))==null?'':__t)+ 93'</div>\r\n </div>\r\n '; 94 } 95__p+='\r\n </div>\r\n '; 96 } 97__p+='\r\n\r\n <p><b>Images: </b>Try to keep the images as small and optimized as possible due to webpage loading speed which is a crucial ranking factor.</p>\r\n <p><b>Images should:</b>\r\n <ul>\r\n <li>always be as small as possible both in height/width</li>\r\n <li>in most cases not be over 100kB</li>\r\n <li>be named in a way that describes what it is about</li>\r\n <li>be named with keywords from the page</li>\r\n <li>be using the Alternate (Alt) tag to describe what the image is about</li>\r\n </ul>\r\n </p>\r\n <p>Select Image --> Click --> Settings --> Tab Text --> Specify custom(Alternative Text)</p>\r\n <p><b>Tip: </b>Use an online service to reduce the image sizes like: <a onclick="window.open(\'https:\\/\\/squoosh.app\', \'_blank\')">https://squoosh.app</a></p>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>'; 98} 99return __p; 100};});}}); 101AppRegistry.registerModule({applicationId:'nibe.seo_dashboard|1.3.4',path:'/component/Entry',module:function(define){'use strict';define(function (require) { 102 'use strict'; 103 104 var Component = require('Component'); 105 var template = require('/template/entry'); 106 var $ = require('jquery'); 107 108 return Component.extend({ 109 template: template, 110 111 tagName: 'div', 112 113 className: 'seo-entry', 114 115 events : { 116 dom: { 117 'click .nb-seo-audit-item-title': 'toggleDescription' 118 } 119 }, 120 121 toggleDescription: function(e) { 122 $(e.target).closest('.nb-seo-audit-item').toggleClass('nb-seo-audit-item-has-visible-description'); 123 }, 124 125 templateFunctions: function () { 126 return { 127 checkTitle: function (title, siteTitle) { 128 let customTitle = title + ' - ' + siteTitle; 129 130 if (title.trim()) { 131 if (customTitle.length < 60) { 132 return { 133 class: 'nb-seo-audit-check-icon-passed', 134 msg: 'There\'s a custom title!' 135 } 136 } else { 137 return { 138 class: '', 139 msg: 'Custom title is too long!' 140 } 141 } 142 } else { 143 return { 144 class: '', 145 msg: 'Enter a custom title for the page!' 146 } 147 } 148 }, 149 checkMetaDescription: function (metaDescription) { 150 var chars = metaDescription.length; 151 152 if (metaDescription.trim()) { 153 if (chars < 50) { 154 return { 155 class: '', 156 msg: 'The meta description is too short!' 157 } 158 } else if (chars > 155) { 159 return { 160 class: '', 161 msg: 'The meta description is too long!' 162 } 163 } else { 164 return { 165 class: 'nb-seo-audit-check-icon-passed', 166 msg: 'The meta description is optimized for search engines!' 167 } 168 } 169 } else { 170 return { 171 class: '',
172 msg: 'There is no meta description!' 173 } 174 } 175 }, 176 checkH1: function (h1) { 177 if (h1 > 1) { 178 return { 179 class: '', 180 msg: 'Use only <u>one</u> h1 heading' 181 } 182 } else if (h1 < 1) { 183 return { 184 class: '', 185 msg: 'There is <u>no</u> h1 heading on page' 186 } 187 } else { 188 return { 189 class: 'nb-seo-audit-check-icon-passed', 190 msg: 'H1 is OK!' 191 } 192 } 193 }, 194 checkImages: function (images) { 195 if (images.length == 0){ 196 return { 197 class: 'nb-seo-audit-check-icon-passed', 198 msg: 'There are no images to optimize!', 199 passed: true 200 } 201 } else { 202 return { 203 class: '', 204 msg: 'There are images that needs optimization!', 205 passed: false 206 } 207 } 208 } 209 } 210 } 211 }); 212});}}); 213AppRegistry.registerModule({applicationId:'nibe.seo_dashboard|1.3.4',path:'/main',module:function(define){'use strict';define(function (require) { 214 'use strict'; 215 216 var _ = require('underscore'); 217 var Component = require('Component'); 218 var template = require('/template/main'); 219 220 return Component.extend({ 221 template: template, 222 223 filterState: function (state) { 224 return _.extend({}, state); 225 }, 226 }); 227}); 228}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.